我尝试通过更新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
答案 0 :(得分:0)
这个例子不清楚。实际例程从单元格B1处的Excel电子表格获取Word文档路径,显式打开该文档,更新表,然后显式关闭文档。基于此,当然它会多次打开和关闭文档。
我们没有看到的是调用UpdateDocument的循环。这取决于调用循环的设计方式。没有看到,猜测就是在UpdateDocument之外移动CreateObject。让UpdateDocument打开文档但不关闭它。循环完成后关闭所有Word文档。如果文件被打开,它将在再次调用时更新。