Question

UPDATE 3:

Cela se produit quand je l'ai sauvé la VB6 scénario, mot près, commencer mot, puis exécuter le modèle comme vous le feriez normalement exécuter un modèle, à savoir strTemplate devient Normal.doc. Puis, dès que je revenir au modèle d'origine qui n'a pas été enregistré par VSTO, que remonte à avoir Lettre.doc dans la strTemplate variables ...

UPDATE 2:

Dans mon script de démarrage, j'ai une ligne comme suit:

strTemplate = ActiveDocument.AttachedTemplate

Dans le modèle d'origine qui est nommé Letter.dot, strTemplate = Letter.dot.

Mais pour une raison quelconque, dans le nouveau modèle de VSTO qui a été basé sur le modèle Letter.dot original, la même ligne ci-dessus devient Normal.dot, ce qui est à l'origine des problèmes, même pensé que le nouveau modèle est encore nommé Letter.dot.

J'ai essayé de coder manuellement dans

strAttTemplate = "Letter.dot"

et le script arrive à l'étape suivante, mais il commence à se plaindre d'autre chose.

Alors ma question est, le modèle d'origine a strTemplate = Letter.dot, mais pourquoi ce changement strTemplate = Normal.dot après l'exécution du modèle par VSTO?

UPDATE 1:

Après avoir exécuté par un débogage pour les deux versions du modèle, à savoir le modèle non VSTO d'origine, et le nouveau modèle de VSTO, j'ai trouvé que l'original n'a pas de propriétés du document, mais le modèle de VSTO a 2 propriétés du document . Mais cela ne semble pas être un problème.

Il semble que le problème a quelque chose à voir avec le modèle de VSTO a normal.dot attaché, alors que le modèle non VSTO d'origine ne sont pas normal.dot attaché.

Est-il possible de retirer normal.dot joint du nouveau modèle?

QUESTION ORIGINAL:

J'utilise Visual Studio 2008 pour créer un projet Word 2003 modèle. Je sélectionne l'option « Utiliser un modèle existant », qui a déjà une certaine VB6 les scripts macro en arrière-plan. Pour une raison quelconque, quand je sauvegarde le projet Visual Studio, le script arrête VB6 travail.

l'ancien script VB6 fonctionne immédiatement lorsque le modèle ouvre mot, mais quand je l'utilise simplement le modèle dans VS2008 sans y ajouter des fonctionnalités supplémentaires et enregistrez le projet et construire le projet, lorsque je tente d'ouvrir le modèle en paroles, ancien script de démarrage ne fonctionne pas.

Pourquoi est-ce qui se passe?

Était-ce utile?

La solution

Le scénario probable est que vous avez une routine appelée AutoExec dans votre Word 2003 .dot VBA. Ce ne sera pas exécuté lorsqu'il est déployé en tant que modèle de VSTO parce que ce n'est pas le type de complément Word, pour se attendre à terme AutoExec (il attend des fichiers soit .wll ou .dot dans votre dossier STARTUP). La façon de contourner cela pour VSTO est d'utiliser à la place AutoOpen qui exécutera le code dans cette sous routine lorsque le modèle est ouvert en tant que complément VSTO.

Vous pouvez essayer ces trois en VBA (dans Word, appuyez sur Alt + F11 pour se rendre à l'éditeur 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

L'autre scénario est que vous n'avez pas vos paramètres de sécurité réglé sur « Low » sur les paramètres de sécurité de mots de votre machine de développement.


En ce qui concerne votre mise à jour # 2, cela se produit généralement lorsque vous exécutez VSTO en mode débogage (F5 au lieu de compiler et d'exécuter Ctrl + F5). Pouvez-vous confirmer la façon dont vous l'exécutez? Si elle est ni l'un de ceux-ci, est-il encore normal.dot lorsque vous déployez à une machine de test?

Enfin, si vous pouvez publier votre script complet de démarrage, ce serait utile pour déterminer où la question peut vraiment mensonge.

Autres conseils

Est-il possible le modèle 2003 crée un DOCX ou un fichier DOTX, et pas un fichier DOCM ou DOTM? Avec 2003 et plus tard, le code macro ne fonctionne pas quand il est dans un fichier DOCX ou DOTX.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top