2026年6月10日

一個既存的 word 程式,可以用 VBS 進行介入將其存檔關閉嗎?

 是的,完全可以。你可以透過 VBS (VBScript) 的 GetObject 函數,直接「介入」並控制電腦中已經在執行(既存)的 Word 程式,將所有開啟的文件自動存檔並關閉。 [1, 2]

請參考下方的範例與操作步驟。

📄 VBS 程式碼範例

請將以下程式碼複製,並貼到記事本中,另存新檔為 CloseWord.vbs(注意:副檔名必須是 .vbs,而不是 .txt)。
Option Explicit

Dim objWord, objDoc

' 嘗試擷取目前已經在執行的 Word 程式
On Error Resume Next
Set objWord = GetObject(, "Word.Application")

' 檢查畫面上是否有正在執行的 Word
If Err.Number <> 0 Then
    ' Err.Number 不為 0 代表目前沒有開啟的 Word 程式
    MsgBox "目前沒有發現執行中的 Word 程式。", 48, "提示"
    Err.Clear
Else
    On Error GoTo 0
    
    ' 隱藏所有彈出警告(例如:相容性提示),避免程式卡住
    objWord.DisplayAlerts = 0 

    ' 逐一檢查所有打開的 Word 文件
    For Each objDoc In objWord.Documents
        ' 儲存文件
        objDoc.Save 
        ' 關閉文件
        objDoc.Close 
    Next

    ' 關閉 Word 主程式
    objWord.Quit 
    
    ' 釋放記憶體變數
    Set objWord = Nothing
    
    MsgBox "所有 Word 文件已自動存檔並順利關閉!", 64, "完成"
End If

🛠️ 程式碼運作原理

  • GetObject(, "Word.Application"):這是最關鍵的語法。第一個參數留空(只有逗號),代表不要建立新視窗,而是直接向 Windows 系統索取已經在背景或桌面執行的 Word 控制權
  • For Each objDoc In objWord.Documents:如果使用者同時打開了 3 個 Word 檔案,這個迴圈會一個一個抓出來處理。
  • objDoc.Save:自動執行儲存。如果是從未存檔過的新文件(例如:Document1),Word 預設會彈出「另存新檔」的視窗讓使用者輸入檔名。
  • objWord.DisplayAlerts = 0:這行可以關閉 Word 的一般警告視窗,確保關閉流程不會被其他不重要的提示阻礙。 [1, 2, 3, 4, 5]

⚠️ 注意事項

  1. 檔案權限:執行此 VBS 腳本的使用者,必須與開啟 Word 的是同一個 Windows 帳號,否則權限不足會無法安全介入。
  2. 從未儲存的新檔案:如果既存的 Word 是全新的空白文件且從未存檔過,執行 objDoc.Save 時畫面上仍會跳出詢問「你要將檔案存到哪裡」的視窗。 [6]
請問這個既存的 Word 檔案,是已經有原本的路徑檔名(只需直接覆蓋存檔),還是需要另外指定特定的資料夾夾與新檔名呢?

沒有留言: