簡體   English   中英

如何檢查Word文件是否從Excel VBA打開?

[英]How to check if a Word file is open from Excel VBA?

我在谷歌中搜索了確切的術語,它吐出多個結果。 我嘗試了至少 4-5 個。 沒有工作。 根據 function,它要么全部為 TRUE,要么全部為 FALSE,但它永遠不會正確。

除了不了解這些功能應該如何工作(這將是次要端點)之外,如果有人可以引導我到主要端點(檢查 Word 文檔是否從 Excel VBA 打開),我將非常感激?

謝謝

Word文件是否打開?

  • 如果 Word 應用程序未打開,則無法打開 Word 文件(在 Word 中)。
  • 所以首先檢查Word是否打開,然后檢查文件是否打開。

Word 打開了嗎?

Function IsWordOpen() As Boolean
    Dim wdApp As Object
    ' Attempt to reference the word application.
    On Error Resume Next
        Set wdApp = GetObject(, "Word.Application")
    On Error GoTo 0
    IsWordOpen = Not wdApp Is Nothing
End Function

Sub IsWordOpenTEST()
    Debug.Print IsWordOpen
End Sub

參考字

Function RefWord() As Object
    Dim wdApp As Object
    ' Attempt to reference the word application.
    On Error Resume Next
        Set wdApp = GetObject(, "Word.Application")
    On Error GoTo 0
    If Not wdApp Is Nothing Then Set RefWord = wdApp
End Function

Sub RefWordTEST()
    ' Reference the word application.
    Dim wdApp As Object: Set wdApp = RefWord
    If wdApp Is Nothing Then
        MsgBox "Word is not open", vbExclamation
        Exit Sub
    End If
    ' Print the names of open files.
    Dim wdDoc As Object
    For Each wdDoc In wdApp.Documents
        Debug.Print wdDoc.Name
    Next wdDoc
End Sub

Word文件是否打開?

' Uses the RefWord function.
Function IsWordFileOpen( _
    ByVal WordFileName As String) _
As Boolean
    Dim wdApp As Object: Set wdApp = RefWord
    If wdApp Is Nothing Then Exit Function
    
    Dim wdDoc As Object
    On Error Resume Next
        ' Attempt to reference the word document.
        Set wdDoc = wdApp.Documents(WordFileName)
    On Error GoTo 0
    IsWordFileOpen = Not wdDoc Is Nothing
End Function

Sub IsWordFileOpenTEST()
    Debug.Print IsWordFileOpen("Test.docx")
End Sub

Word 文件是否打開(獨立)?

  • 為什么我要在上面發布所有這些程序?
  • 當您運行以下命令時,如果結果為True ,那么您知道以下內容:
    • 話一開,
    • 名為Test.docx的文件已打開。
  • 您不知道的是它是正確的文件還是同名的另一個文件。
  • 如果結果為False ,情況會變得更糟,即您不知道以下內容:
    • Word是否打開
    • 是否有另一個 Word 實例打開了該文件
    • 另一個應用程序是否已鎖定該文件,或者沒有...
  • 總而言之,根據您打算如何處理這些信息,您必須決定要檢查什么,即要小心,這只是一種基本方法。
' Stand-Alone
Function IsWordFileOpenCompact( _
    ByVal WordFileName As String) _
As Boolean
    Dim wdApp As Object
    ' Attempt to reference the word application.
    On Error Resume Next
        Set wdApp = GetObject(, "Word.Application")
    On Error GoTo 0
    If wdApp Is Nothing Then Exit Function
    
    Dim wdDoc As Object
    On Error Resume Next
        ' Attempt to reference the word document.
        Set wdDoc = wdApp.Documents(WordFileName)
    On Error GoTo 0
    IsWordFileOpenCompact = Not wdDoc Is Nothing
End Function

Sub IsWordFileOpenCompactTEST()
    Debug.Print IsWordFileOpenCompact("Test.docx")
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM