我试图通过将数据放入电子表格并链接到 Word 中的相应单元格来自动更新 3 个不同 Word 文档中的某些信息(例如名称、日期和数字)。电子表格中有一些宏,可以在内部自动更新电子表格的某些部分。
一切正常,除了更新 Word 文档中的链接。当试图通过右键单击它并选择“更新链接”选项来更新 Word 中的链接时,它会弹出电子表格的宏警告对话框,询问我是否要激活宏。它不会只这样做一次,而是在 20 多岁左右的更新过程中不断地这样做(这对我来说似乎异常长)。所以更新链接是有效的,但前提是你愿意点击几十次“激活宏”按钮。
我尝试使用 VBA 从 Word 自动更新文档中的所有字段,但这有同样的问题,它还会不断地打开宏对话框半分钟。这是我的代码:
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 的经验很少,所以我可能完全忽略了这一点,并且有一个我不知道的超级简单的解决方案。