Vba 更新word文档中的字段时防止重新打开同一文档
我试图通过更新word文档中的字段来更新所有链接的图表,因为这些图表都属于同一个excel文档,这会导致同一个excel文档被一次又一次地重新打开。是否有方法检测相同的excel文档,并且只打开一次Vba 更新word文档中的字段时防止重新打开同一文档,vba,excel,ms-word,Vba,Excel,Ms Word,我试图通过更新word文档中的字段来更新所有链接的图表,因为这些图表都属于同一个excel文档,这会导致同一个excel文档被一次又一次地重新打开。是否有方法检测相同的excel文档,并且只打开一次 Sub UpdateDocument() Dim WordApplication As Word.Application Dim WordDoc As Word.Document Dim updateLinks As Boolean Dim Filepath As
Sub UpdateDocument()
Dim WordApplication As Word.Application
Dim WordDoc As Word.Document
Dim updateLinks As Boolean
Dim Filepath As String
Filepath = ThisWorkbook.Sheets("Sheet1").Range("B1").Cells.Value
Set WordApplication = CreateObject("Word.Application")
'capture the original value
updateLinks = WordApplication.Options.UpdateLinksAtOpen
'temporarily disable
WordApplication.Options.UpdateLinksAtOpen = False
Set WordDoc = WordApplication.Documents.Open(Filepath)
Application.DisplayAlerts = False
WordDoc.Fields.Update
WordDoc.Save
WordDoc.Close
'## reset the previous value and Quit the Word Application
WordApplication.Options.UpdateLinksAtOpen = updateLinks '
WordApplication.Quit
End Sub
这个例子不清楚。实际例程从单元格B1的Excel电子表格中获取Word文档路径,显式打开该文档,更新表,然后显式关闭该文档。仅基于此,它当然会多次打开和关闭文档 我们没有看到的是调用UpdateDocument的循环。这取决于调用循环的设计方式。如果看不到这一点,猜测可能是将CreateObject移到UpdateDocument之外。让UpdateDocument打开文档但不关闭它。循环完成后关闭所有Word文档。如果文件已打开,则再次调用时会更新