Domanda

UPDATE 3:

Questo accade quando ho salvato il VB6 sceneggiatura, chiudere Word, avviare Word, quindi eseguire il modello come si farebbe normalmente eseguire un modello, vale a dire strTemplate diventa Normal.doc. Poi appena ho tornare al modello originale che Non è stato salvato attraverso VSTO, che torna ad avere lettera.doc nel strTemplate variabile ...

UPDATE 2:

Nel mio script di avvio, ho una riga come segue:

strTemplate = ActiveDocument.AttachedTemplate

Nel modello originale che prende il nome Letter.dot, strTemplate = Letter.dot.

Ma per qualche motivo, nel nuovo modello VSTO che era basato sul modello originale Letter.dot, la stessa linea di cui sopra diventa Normal.dot, che sta causando problemi, anche pensato che il nuovo modello è ancora chiamato Letter.dot.

Ho cercato di codice manualmente in

strAttTemplate = "Letter.dot"

e lo script ottiene alla fase successiva, ma poi inizia a lamentarsi di qualcosa d'altro.

Quindi la mia domanda è, il modello originale ha strTemplate = Letter.dot, ma perché fa questo cambiamento strTemplate = Normal.dot dopo l'esecuzione del modello attraverso VSTO?

UPDATE 1:

Dopo aver eseguito attraverso un debug per entrambe le versioni del modello, vale a dire il modello originale non VSTO, e il nuovo modello VSTO, ho scoperto che l'originale non ha le proprietà del documento, ma il modello di VSTO ha 2 proprietà del documento . Ma questo non sembra essere un problema.

Sembra che il problema ha a che fare con il modello VSTO ha normal.dot collegato ad esso, mentre il modello non VSTO originale non dispone di normal.dot collegato ad esso.

E 'possibile rimuovere normal.dot attaccato dal nuovo modello?

domanda iniziale:

Sto usando Visual Studio 2008 per creare un progetto di modello di Word 2003. Seleziono l'opzione "Usa esistente modello", che ha già una certa VB6 macro di script in background. Per qualche ragione, quando salvo il progetto di Visual Studio, lo scripting VB6 smette di funzionare.

il vecchio copione VB6 corre subito quando il modello si apre in parola, ma quando ho semplicemente utilizzare il modello in VS2008 senza l'aggiunta di funzionalità extra e salvare il progetto e generare il progetto, quando provo ad aprire il modello in parola, il vecchio script di avvio non funziona.

Perché succede questo?

È stato utile?

Soluzione

Lo scenario probabile è che avete una routine chiamata AutoExec nel Word 2003 dot VBA. Questo non verrà eseguito quando schierato come modello VSTO perché non è il tipo di componente aggiuntivo si aspetta di Word per AutoExec corsa (che si aspetta file sia WLL o file .dot nella cartella Esecuzione automatica). Il modo per aggirare questo per VSTO è quello di utilizzare AutoOpen invece che eseguirà il codice in quella sub routine quando il modello viene aperto come un componente aggiuntivo VSTO.

È possibile provare questi tre in VBA (in Word, premere Alt + F11 per raggiungere l'editor di 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'altro scenario è che non hai le impostazioni di protezione impostato su "Low" delle impostazioni di sicurezza di Word del computer di sviluppo.


Per quanto riguarda l'aggiornamento # 2, questo di solito accade quando si esegue VSTO in modalità di debug (F5 invece di compilare ed eseguire lo Ctrl + F5). Puoi confermare come si esegue esso? Se non è né uno di quelli, è ancora normal.dot quando si distribuisce a una macchina di prova?

Infine, se si potrebbe pubblicare il tuo script di avvio completo, che sarebbe utile per determinare dove il problema può veramente bugia.

Altri suggerimenti

E 'possibile il modello 2003 è la creazione di un file DOTX DOCX o, e non è un file o di DOCM DOTM? Con 2003 e versioni successive, il codice macro non verrà eseguito quando si trova in un file DOCX o DOTX.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top