【问题标题】:How to make sure from Excel that a specific Word document is open or not?如何从 Excel 确保特定的 Word 文档是否打开?
【发布时间】:2015-07-10 19:52:54
【问题描述】:

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

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

是否有方法可以防止 then 宏在模板 word 文档已经打开的情况下崩溃

下面是我的代码

Set wdApp = CreateObject("Word.Application") 'Create an instance of word

Set wdDoc = wdApp.Documents.Open(ThisWorkbook.Path & "\Templates\Template_Confirmation.docx") 'Create a new confirmation note

【问题讨论】:

  • 在发布问题之前做一些研究
  • 应志杰:回答对你有帮助吗?如果是并且您的问题已解决,请接受答案以将您的问题标记为已解决(在赞成/反对票下打勾,这将变为绿色),如果没有,请告诉我们问题出在哪里
  • @R3uK 你好!确实很有帮助。我已经接受了你的回答。我对这个论坛很陌生,所以我不太了解它。感谢您的信息!
  • @raghavendra 谢谢!

标签: vba excel ms-word


【解决方案1】:

以下是 cmets 中建议的演变:

一个功能,用于测试文件是否打开并让您在测试时直接设置它

如何使用它:

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应用程序的引用...

欢迎任何建议/改进!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多