我試圖通過將數據放入電子表格並鏈接到Word中相應的單元格來自動更新3個不同Word文檔中的某些信息(例如名稱,日期和數字)。電子表格中包含一些宏,可以在內部自動更新部分電子表格。從Excel VBA更新Word文檔中的鏈接字段
一切工作正常,除了更新Word文檔中的鏈接。 當試圖更新Word中的鏈接並右鍵單擊它並選擇「更新鏈接」選項時,它會爲電子表格提出宏警告對話框,詢問我是否要激活宏。它不會只做一次,而是會在20多秒左右的更新過程中持續進行(這對我來說似乎非常長)。因此,更新鏈接工作,但只有當你願意點擊幾十次「激活宏」按鈕。
我試圖用Word自動更新文檔中的所有字段與VBA,但也有同樣的問題,它也持續半分鐘帶來宏對話框。 這裏是我的代碼:
Sub UpdateFields()
ActiveDocument.Fields.Update
End Sub
我也試圖直接從電子表格更新的Word文檔,但是,不能正常工作,因爲當Excel試圖通過VBA打開一個Word文檔的程序停止執行,並導致此錯誤:
「Excel正在等待另一個應用程序來完成OLE操作」。
單擊確定並等待不起作用,因爲幾秒鐘後會再次出現錯誤消息,並且停止它的唯一方法是手動終止Excel進程。
這裏是我的Excel宏代碼:
Sub LoopThroughFiles()
Path = Application.ActiveWorkbook.Path
Dim WordFile As String
WordFile = Dir(Path & "\*.doc")
Do While Len(WordFile) > 0
Run Update(Path & "\" & WordFile)
WordFile = Dir
Loop
End Sub
Function Update(Filepath As String)
Dim WordDoc As Word.Document
Set WordApplication = CreateObject("Word.Application")
Set WordDoc = WordApplication.Documents.Open(Filepath) 'This produces the error
ActiveDocument.Fields.Update
End Function
注意,文件夾中的文件只有3個文檔和電子表格,程序確實發現文件沒有任何問題。
我在網上搜索瞭解決方案,但是我沒有真正找到任何東西,我發現這很奇怪,因爲這似乎是一個人會用VBA做的很常見的事情。 然後,我對VBA幾乎沒有什麼經驗,所以我可能完全忽略了這一點,並且有一個我只是不知道的超級簡單解決方案。
程序無法找到這些文件,除非您在此代碼中輸入了拼寫錯誤,因爲'儘管Len(StrFile)> 0'應該是'Do While Len(WordFile)> 0'。未聲明的變量還有其他一些潛在的問題,但我不指望這些會導致錯誤。無論如何,我會看看如果我能想出它:) –
我實際上在我的程序中使用StrFile作爲變量名稱,當我在此處發佈它時我更改了名稱,因爲我想讓它更容易理解,並且忘記更改線。所以不幸的是,這不是問題。 –
我已經更新了上面的代碼,WordFile現在一直使用。感謝您指出。 –