2011-03-17 47 views
1

更新3:的Visual Studio Tools for Office中打破了VB6

發生這種情況時,我有救了VB6 腳本,關閉Word,啓動Word,然後 運行模板,你通常會 運行一個模板,即strTemplate 變爲Normal.doc。然後,只要我 回到其 尚未通過VSTO保存原始模板,即 追溯到其在 可變strTemplate letter.doc的...

更新2:

在我的啓動腳本中,我有如下一行:

strTemplate = ActiveDocument.AttachedTemplate 

在被命名爲Letter.dot原始模板,strTemplate = Letter.dot 。

但由於某種原因,在基於原始Letter.dot模板的新vsto模板中,上面的同一行變爲Normal.dot,這導致了問題,甚至認爲新模板仍命名爲Letter.dot 。

我試圖在

strAttTemplate = "Letter.dot" 

手動代碼和腳本獲取到下一個階段,但隨後開始抱怨別的東西。

所以我的問題是,原始模板有strTemplate = Letter.dot,但爲什麼在通過vsto運行模板之後,這會更改爲strTemplate = Normal.dot?

更新1:

通過對模板的兩個版本調試運行,即原非VSTO的模板,新VSTO模板後,我發現,原來沒有任何文件屬性,但vsto模板有2個文檔屬性。但這似乎不成問題。

似乎問題與vsto模板有normal.d.d附加到它,而原始非vsto模板沒有normal.dot附加到它。

是否可以從新模板中刪除附加的normal.dot?

原題:

我使用Visual Studio 2008創建一個Word 2003的模板項目。我選擇了「使用現有模板」選項,該選項在後臺已經有一些vb6宏腳本。出於某種原因,當我保存Visual Studio項目時,VB6腳本停止工作。

舊的vb6腳本直接運行,當模板在word中打開時,但是當我簡單地使用vs2008中的模板而不添加額外的功能並保存項目並構建項目時,當我嘗試打開模板時,舊的啓動腳本不起作用。

這是怎麼發生的?

+1

VBA不是VB6。這是不正確的標籤。 – Bob77 2011-03-18 13:31:38

+0

哪些代碼沒有運行?它不會是AUTORUN宏,是吧。我似乎想起了一個問題,即自動運行宏在某些情況下不會被Word執行。被加載到VS dev IDE可能就是其中之一。 – DarinH 2011-03-22 15:32:32

+0

請參閱原始問題中的** UPDATE 1:**。 – oshirowanen 2011-03-23 10:46:08

回答

2

的可能的情況是,你在Word 2003中.DOT VBA有一個名爲AutoExec程序。當作爲VSTO模板部署,因爲它不是附加在Word類型預計,爲了運行AutoExec(預計啓動文件夾中或者.wll文件或.dot文件),這將不會執行。 VSTO的解決方法是使用AutoOpen代替當模板作爲VSTO加載項打開時執行該子例程中的代碼。

您可以嘗試在VBA這三個(在Word中,按下Alt鍵+ F11 才能到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 

的另一種情況是你沒有你的安全在開發機器的Word安全設置中將設置設置爲「低」。


關於你提到的更新#2,當你在調試模式下運行VSTO(F5,而不是編譯並運行它按Ctrl + F5的)這通常發生。你能確認你如何運行它嗎?如果它不是其中之一,那麼將它部署到測試機器時它仍然正常嗎?

最後,如果你可以發佈您的全啓動腳本,這將是決定在問題可能真正說謊很有幫助。

+0

Doh。 AutoExec和AutoOpen。這就是我的意思。幾乎不再使用那些東西。 – DarinH 2011-03-22 19:06:24

+0

@drventure:不幸的是我仍然陷在那個世界。或幸運的是,如果我得到賞金:) – 2011-03-22 20:29:59

+0

我試圖用AutoOpen替換AutoExec,但是停止啓動腳本的所有模板,甚至是不是VSTO的模板。所以我扭轉了這些變化,舊的模板又開始工作了。 – oshirowanen 2011-03-23 10:05:19

0

是否有可能在2003模板創建一個DOCX或DOTX文件,而不是一個DOCM或DOTM文件?在2003及更高版本中,宏代碼在DOCX或DOTX文件中時無法運行。

+0

文件擴展名似乎沒有改變,你是說它正在創建一個dotx文件,但顯示擴展名爲.dot? – oshirowanen 2011-03-18 10:04:53

+0

DOCX,DOTX直到2003年後纔開始。 – oshirowanen 2011-03-22 14:19:48

+0

不知道爲什麼這個答案被拒絕。 DOCX,DOTX,DOCM和DOTM都是較新版本的壓縮XML格式文件,Office的更高版本將保存爲。我相信它們是在Office 2003中引入的,但在2007年成爲主流。Office XP和2000中有一個插件包,允許在Office XP和2000中讀寫這些新格式。至於將DOC保存在DOCX中,除非你像保存DOCX文件那樣做一些奇怪的事情,並且他們手動將其重命名爲DOC(並且我以前見過這種情況,所以不要打折!) – DarinH 2011-03-22 14:46:33

相關問題