2016-11-06 91 views
0

我有下面的VBScript(based on this answer):VBScript中添加宏的MS Word

Set wdApp = CreateObject("Word.Application") 
Set wdDoc = wdApp.Documents.Open("c:\docs_to_process\document1.docx") 
Set xlmodule = wdDoc.VBProject.VBComponents.Add(1) 
strCode = _ 
    "sub test()" & vbCr & _ 
    " msgbox ""Inside the macro"" " & vbCr & _ 
    "end sub" 
xlmodule.CodeModule.AddFromString strCode 
wdDoc.Save 
wdDoc.Close 
wdApp.Quit 

的問題是:當我運行它,並保存文檔前停止腳本,我可以看到在宏觀打開Word文件,但是當我進一步處理後,保存文檔並退出腳本,之後如果打開Word文檔,我看不到任何宏。

我在做什麼錯?

PS:我在這裏提供固定的字符串給其他人面臨着同樣的問題:

wdDoc.SaveAs "c:\docs_to_process\document1.docm", 13 
wdDoc.Close 

重要提示: ,而不是僅僅保存,給新文件名和點 文檔類型爲wdFormatXMLDocumentMacroEnabled是13枚舉列表 我不知道爲什麼,但指向枚舉類型

wdDoc.SaveAs "c:\docs_to_process\document1.docm", wdFormatXMLDocumentMacroEnabled 

打開文件後會導致同樣的錯誤,好像我只是更改了擴展

回答

0

對於宏,文件擴展名應爲docm,即啓用宏。因此,更改文件名

wdDoc.SaveAs「C:\ docs_to_process \ document1.docm」,wdFormatXMLDocumentMacroEnabled

+0

得到它,感謝您指出的方向,如果有什麼word文檔以前沒有宏觀和我的一個是第一插入?我試圖用「.docm」擴展來保存它,但之後 - Word應用程序告訴文檔有錯誤,我應該在處理.docx文件時以某種方式在vbscript中啓用宏? –

+0

在這種情況下,請將文件作爲docx讀取。添加宏並執行SaveAs –

+0

設置wdDoc = wdApp.Documents.Open(「c:\ docs_to_process \ document1.docx」) wdDoc.SaveAs(「c:\ docs_to_process \ document1.docm」) - 當我嘗試時出現錯誤打開.docm文件 看起來像我必須做一些文件轉換器的操作,但我找不到VBS的適當信息不是VBA –