none
[VB6]請問如何取得所有開啟(執行)中的Word文件 RRS feed

  • 問題

  • 小弟目前有個需求為透過程式儲存目前使用者編輯中的Word文件,

    此目的為檔案管理、分類用,

    小弟目前使用GetObject的函式來取得開啟(執行)中Word文件,

    方式如下:

    Set oMyRunningWord = GetObject(, "Word.Application")

     

    If Err.Number = 0 Then

        ' 取得編輯中Word文件完整路徑+檔案名稱

        sFullPath = Trim(oMyRunningWord.ActiveDocument.FullName)   

        ' 取得編輯中Word文件檔案名稱

        sFileName = Trim(oMyRunningWord.ActiveDocument.Name) 

        XXX

    Else

        MsgBox ("無開啟中的WORD檔案,請確認!")

    End If

     

    經測試後發現在某些狀況使用GetObject取得開啟(執行)中的Word文件時,

    會僅取得部份開啟(執行)中的Word文件,

    oMyRunningWord.Documents.Count <> 開啟(執行中)的Word文件數量,

    或者是不管編輯中的Word文件是哪一個,

    抓到的oMyRunningWord.ActiveDocument.FullName永遠是同一個,

    請問此問題有什麼方法可以解決,

    或者是除了使用GetObject外還有其他方法可以取得開啟(執行)中Word文件,

    謝謝!

     

    作業系統:Windows XP

    OFFICE版本: OFFICE 2003

    2007年5月2日 下午 04:55

解答

  • 你先用工作管理員檢查一下你啟動的 WinWord.exe 有幾個。

     

    GetObject(, "Word.Application")

     

    只能傳回一個。

     

    如果你的 Word 是共用一個的情況下,才能分辨所有文件數。

     

    如果是多個 WinWord.exe ,則只能分辨該程序下所管理到的文件。

     

    WinWord.exe 的個數,依照版本或啟動方式並非只有一個,Word 2003 用手點選捷徑所產生的 Word 是同一個,但是若是作為 DDE 或是透過程式用 CreateObject 建立,則會有多個。

    2007年5月3日 上午 03:06
    版主

所有回覆

  • 你先用工作管理員檢查一下你啟動的 WinWord.exe 有幾個。

     

    GetObject(, "Word.Application")

     

    只能傳回一個。

     

    如果你的 Word 是共用一個的情況下,才能分辨所有文件數。

     

    如果是多個 WinWord.exe ,則只能分辨該程序下所管理到的文件。

     

    WinWord.exe 的個數,依照版本或啟動方式並非只有一個,Word 2003 用手點選捷徑所產生的 Word 是同一個,但是若是作為 DDE 或是透過程式用 CreateObject 建立,則會有多個。

    2007年5月3日 上午 03:06
    版主
  • 璉璉,

    感謝您的回覆,

    看來是無法使用GetObject來達到我要的結果,

    請問除了使用GetObject取得開啟(執行)中的Word文件外,

    是否還有其他方法可以取得?

    2007年5月3日 上午 03:32