2016-08-29 31 views
0

如何在沒有打開的情況下在單詞中運行宏。 我經歷了同樣的問題。
解決辦法是:如何在不打開它的情況下在單詞中運行宏?

Dim Word  
Dim WordDoc 

Set Word = CreateObject("Word.Application")  
Word.Visible = False 

Set WordDoc = Word.Documents.open("D:\working_folder\abc.doc")  
Word.Run "<macroname>"  
WordDoc.Save 

Word.Quit   
Set WordDoc = Nothing 
Set Word = Nothing 

這對我來說工作良好,但在這種情況下,文件名是具體的("abc.doc")。

如果我想爲所有位於同一文件夾中的文件運行宏,該怎麼辦?
宏定義在所有這些文件中,我只想知道如何獲取文件夾中的所有文件名。

+0

這是關於如何枚舉文件夾中的所有文件或如何運行在其他文件上的文件中定義的宏的問題? –

+0

我有宏可以運行在所有的MS Word文件中,無論打開文件時在特定文件夾中發佈,因爲我通過FTP將文件批量傳輸到特定文件夾中 – Pradeep

+0

是的,這很清楚。是否在所有這些文件中定義了marco(您只是想知道如何獲取文件夾中的所有文件名),或者您是否想要在定義文件以外的文件上運行marco(不同的問題) –

回答

3

未經檢驗的,但這樣的事情:

Dim Word, fldr, f  
Dim WordDoc 

Set Word = CreateObject("Word.Application")  
Word.Visible = False 

fldr = "D:\working_folder\" 
f = Dir(fldr & "*.doc*") 

Do while f<>"" 

    Set WordDoc = Word.Documents.open(fldr & f)  
    Word.Run "<macroname>"  
    WordDoc.Save 
    WordDoc.Close 
    f = Dir() 

Loop 

Word.Quit   
Set WordDoc = Nothing 
Set Word = Nothing 

你不能沒有打開包含它雖然文件運行宏。

+0

以上測試...但不工作。 – Pradeep

+0

特定錯誤訊息? 使用類似的程序,我沒有理由爲什麼Tim的解決方案不應該工作 - 除非,也許你試圖運行一個自動化郵件合併的宏。 –

+0

錯誤:類型不匹配:'Dir' 代碼:800A000D – Pradeep

相關問題