Vba 更新word文档中的字段时防止重新打开同一文档

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

我试图通过更新word文档中的字段来更新所有链接的图表,因为这些图表都属于同一个excel文档,这会导致同一个excel文档被一次又一次地重新打开。是否有方法检测相同的excel文档,并且只打开一次

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文档。如果文件已打开,则再次调用时会更新