【問題】在Excel巨集中等待或判斷word已開啟



贊助商連結


Oyazi
2007-01-18, 12:58 PM
各位好, 有一個問題請教各位
我用以下的程式碼在excel的巨集中呼叫word並開檔
Application.ActivateMicrosoftApp xlMicrosoftWord
Set wdApp = GetObject(, "word.application")
wdApp.documents.Open (vfilename)
第一行是啟動word,接著第二行是設定 wdApp為word的一個物件,但是當第一行執行完後接著第二行的過程中,也是是電腦速度的問題,word主程式還正在載入,但是第二行程式已經執行,就會發生錯誤:"ActiveX無法產生物件"。
所以想請教各位,是否有函數可以去檢查word是否已經啟動,把這樣的檢查程序放到第一行與第二行中間,確保程式不會出錯,我最初是用等待的函數去閃這個問題,但是考慮到可能每台電腦的效能不一,總不能設定個15秒在那裡等,所以希望有經驗的前輩可以指點指點,謝謝。

贊助商連結


xxlandbank
2007-01-20, 08:53 PM
不用等待,不用判斷
Set wdApp = GetObject(, "word.application")
wdApp.Documents.Open (vfilename)
wdApp.Windows(1).Visible = True

Oyazi
2007-01-22, 03:48 PM
不用等待,不用判斷
Set wdApp = GetObject(, "word.application")
wdApp.Documents.Open (vfilename)
wdApp.Windows(1).Visible = True
謝謝xxlandbank的回覆
問題還是一樣,也許您誤會我的意思了
我目前卡在,使用GetObject()這個函數上,因為要先啟動Word,這個函數才會有效,所以錯誤碼會發生在
Set wdApp = GetObject(, "word.application")
錯誤發生候,後面兩行就不會執行...
不過還是很謝謝您的解說

xxlandbank
2007-01-22, 07:30 PM
您試試以下兩者都行:
Sub TEST1()
Set wdApp = CreateObject("word.application")
wdApp.Documents.Open (vfilename)
wdApp.Windows(1).Visible = True
End Sub

Sub TEST2()
Set wdApp = GetObject(vfilename)
wdApp.Windows(1).Visible = True
End Sub

您的程式碼Application.ActivateMicrosoftApp xlMicrosoftWord
已經激活了Word程式,又取一個空Word物件,其實已經重覆了動作吧?