VB6下,一個定時器,定時器中的代碼如下
Dim OBJ As Object
On Error Resume Next
Set OBJ = GetObject(, "excel.Application")
debug.Print err.Description
很奇怪的問題
如果程式運行前,就已經打開EXCEL,,那么顯示是OK(理論也如此)
如果程式運行后,再打開EXCEL,那么還是顯示著運行錯誤(ACTIVEX不能創建之類)
但程,如何EXCEL程式失去了焦點,也就隨便點擊了其它表單,那么又顯示了正常,,,不明白為什么
現在就是程式運行后,再打開EXCEL,打開EXCEL之后,如果沒有沒有讓EXCEL失去激活狀態,那么一直都是顯示錯誤。。按照理論,此時EXCEL已經打開,那么GetObject應該是可以捕捉得到EXCEL了啊,,為什么還是顯示錯誤呢。。而且奇怪的是,打開EXCEL后重新點一下其它表單又可以正常了。。
不明白啊,,搞了一天,,都沒有弄明白
uj5u.com熱心網友回復:
getobject用于獲取已經打開的檔案物件,必須指明檔案名全路徑(第一個引數),如果沒有使用檔案名引數,效果和createobject相同uj5u.com熱心網友回復:
謝謝你的回答,可是我還是不大懂可能我之前說明的不好,我再說一下
該程式只有在timer中有以下代碼
Dim OBJ As Object
On Error Resume Next
Set OBJ = GetObject(, "excel.Application")
debug.Print err.Description
1.當執行程式時,如果在執行這個程式之前就已經打開了EXCEL,那么 err.Description是為空的,也就是沒有錯誤值
2.如果執行了這個程式(還沒有打開EXCEL),那么 err.Description的描述是ActiveX 部件不能創建物件
第1,2都好理解,,問題在于以下
3.
A.執行程式(還沒有打開EXCEL ) 錯誤資訊為 ActiveX 部件不能創建物件
B.雙擊桌面EXCEL,打開EXCEL程式 錯誤資訊還是為 ActiveX 部件不能創建物件 (為什么,此時已經打開了EXCEL,應該GetObject不會再回傳一個錯誤了啊)----問題點
C.打開了EXCEL,此時EXCEL程式是激活狀態,隨便點擊一下其它表單(讓EXCEL程式不是激活狀態),程式不再出現錯誤資訊。此點不明白,為什么呢,當EXCEL失去了焦點就不錯了呢-----為什么
上面就只有4行代碼,請大家試一下(VB 6 + OFFICE 2003+WIN7或WINXP)
值得說的是,,如果不是EXCEL,,而是其它的軟體,如金山的WPS,那么同是上面的代碼寫法,均不會出現這種問題。。
uj5u.com熱心網友回復:
就是什么時候寫入 ROT 的問題。Excel 喜歡在失去焦點時寫入,WPS 喜歡在啟動時寫入,這個時機純屬開發者的個人喜好,沒有硬性規定的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/142465.html
標籤:VB基礎類
