如何从Excel中确定某个特定的Word文档是否打开



我希望我的excel宏通过在模板word文档中放置的书签之后插入电子表格数据来创建报告。

但是我发现如果模板word文档已经打开,宏将崩溃,因此模板文档将被锁定为只读,不再被宏访问。

是否有方法来防止宏崩溃,即使模板word文档已经打开?

下面是我的代码
Set wdApp = CreateObject("Word.Application") 'Create an instance of word
Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "TemplatesTemplate_Confirmation.docx") 'Create a new confirmation note

这是评论中建议的演变:

一个函数,用于测试文件是否打开,并在测试时提供直接设置。

如何使用:

Sub test()
Dim WdDoc As Word.Document
Set WdDoc = Is_Doc_Open("test.docx", "D:Test")
MsgBox WdDoc.Content
WdDoc.Close
Set WdDoc = Nothing
End Sub

功能:

Public Function Is_Doc_Open(FileToOpen As String, FolderPath As String) As Word.Document
'Will open the doc if it isn't already open and set an object to that doc
Dim wrdApp As Word.Application
Dim wrdDoc As Word.Document
On Error Resume Next
'Set wrdApp = GetObject(, "Word.Application")
If wrdApp Is Nothing Then
    Set wrdApp = CreateObject("Word.Application")
    Set wrdDoc = wrdApp.Documents.Open(FolderPath & FileToOpen)
Else
    On Error GoTo NotOpen
    Set wrdDoc = wrdApp.Documents(FileToOpen)
    GoTo OpenAlready
NotOpen:
    Set wrdDoc = wrdApp.Documents.Open(FolderPath & FileToOpen)
End If
OpenAlready:
On Error GoTo 0
Set Is_Doc_Open = wrdDoc
Set wrdApp = Nothing
Set wrdDoc = Nothing
End Function

唯一的缺点是,你没有Word应用程序的参考…

欢迎任何建议/改进!

最新更新