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

时间:2017-06-29 01:55:19

标签: vba excel-vba word-vba excel

我尝试通过更新word文档中的字段来更新所有链接图表,因为这些图表都属于同一个Excel文档,它会导致同一个excel doc一遍又一遍地重新打开。有没有办法检测到同一个excel doc并且只打开一次?

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

1 个答案:

答案 0 :(得分:0)

这个例子不清楚。实际例程从单元格B1处的Excel电子表格获取Word文档路径,显式打开该文档,更新表,然后显式关闭文档。基于此,当然它会多次打开和关闭文档。

我们没有看到的是调用UpdateDocument的循环。这取决于调用循环的设计方式。没有看到,猜测就是在UpdateDocument之外移动CreateObject。让UpdateDocument打开文档但不关闭它。循环完成后关闭所有Word文档。如果文件被打开,它将在再次调用时更新。