Pregunta

Actualización 3:

Esto sucede cuando guardé el script VB6, cierre la palabra, inicie la palabra, luego ejecute la plantilla, ya que normalmente ejecutaría una plantilla, es decir, strtemplate se vuelve normal.doc. Luego, tan pronto como vuelvo a la plantilla original que no se ha guardado a través de vsto, eso se remonta a tener letra.doc en la variable strtemplate ...

Actualización 2:

En mi guión de inicio, tengo una línea de la siguiente manera:

strTemplate = ActiveDocument.AttachedTemplate

En la plantilla original que se llama lett.dot, strtemplate = lett.dot.

Pero por alguna razón, en la nueva plantilla VSST que se basó en la plantilla de letra original. La misma línea anterior se vuelve normal.

Traté de codificar manualmente

strAttTemplate = "Letter.dot"

Y el guión llega a la siguiente etapa, pero luego comienza a quejarse de otra cosa.

Entonces mi pregunta es que la plantilla original tiene strtemplate = lett.dot, pero ¿por qué esto cambia a strtemplate = normal.dot después de ejecutar la plantilla a través de vsto?

Actualización 1:

Después de ejecutar una depuración para ambas versiones de la plantilla, es decir, la plantilla original no VSST, y la nueva plantilla VSST, he descubierto que el original no tiene propiedades de documento, pero la plantilla VSST tiene 2 propiedades de documentos. Pero eso no parece ser un problema.

Parece que el problema tiene algo que ver con la plantilla vsto tiene normal.

¿Es posible eliminar la normalidad adjunta. DOT de la nueva plantilla?

Pregunta original:

Estoy usando Visual Studio 2008 para crear un proyecto de plantilla de Word 2003. Selecciono la opción "Usar plantilla existente" que ya tiene algunos script de macro VB6 en segundo plano. Por alguna razón, cuando guardo el proyecto Visual Studio, la secuencia de comandos VB6 deja de funcionar.

El antiguo script VB6 se ejecuta de inmediato cuando la plantilla se abre en Word, pero cuando simplemente uso la plantilla en VS2008 sin agregar funcionalidad adicional y guardar el proyecto y construir el proyecto, cuando intento abrir la plantilla en Word, el antiguo script de inicio No funciona.

¿Por qué está pasando esto?

¿Fue útil?

Solución

El escenario probable es que tenga una rutina llamada AutoExec En tu palabra 2003 .DOT VBA. Esto no se ejecutará cuando se implementará como una plantilla VSTO porque no es el tipo de palabra complementaria se espera para ejecutar AutoExec (Espera archivos .wll o archivos .dot en su carpeta de inicio). La forma en que esto para VSTO es usar AutoOpen En su lugar, ejecutará el código en esa rutina sub rutina cuando la plantilla se abre como un complemento VSTO.

Puedes probar estos tres en VBA (en Word, presione Alternativo + F11 Para llegar al editor de Visual Basic):

Sub AutoNew()
    MsgBox "AutoNew runs when creating a document from a template"
End Sub
Sub AutoOpen()
    MsgBox "AutoOpen runs when opening a template as a document"
End Sub
Sub AutoExec()
    MsgBox "AutoExec runs when loading an add-in (a global template)"
End Sub

El otro escenario es que no tiene su configuración de seguridad establecida en "baja" en la configuración de seguridad de palabras de su máquina de desarrollo.


Con respecto a su actualización n. ° 2, esto generalmente ocurre cuando ejecuta VSTO en modo de depuración (F5 en lugar de compilarlo y ejecutarlo CTRL + F5). ¿Puedes confirmar cómo lo estás ejecutando? Si no es ninguno de esos, ¿sigue siendo normal? ¿Cuando lo implementa en una máquina de prueba?

Finalmente, si pudiera publicar su script de inicio completo, eso sería útil para determinar dónde puede ser realmente el problema.

Otros consejos

¿Es posible que la plantilla de 2003 esté creando un archivo DOCX o DOTX, y no un archivo DOCM o DOTM? Con 2003 y posterior, Macro Code no se ejecutará cuando esté en un archivo DOCX o DOTX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top