Trending News
用 WebBrowser1寫一個Excel VBA,無法動作
各位大大
因為工作需要,要用 WebBrowser1寫一個Excel VBA,但無法運行
使用別人寫好的WebBrowser1卻可以運行
引用項目也添加了「Microsoft HTML Object Libaray」
請問各位要如何能將自己寫的ExcelVBA運行WebBrowser1?
如下程式碼
Sub test()
WebBrowser1.Navigate "http://www.google.com/%22
Do Until WebBrowser1.ReadyState = READYSTATE_COMPLETE
DoEvents
Loop
On Error Resume Next
WebBrowser1.Navigate "about:blank"
End Sub
我知道可以直接用CreateObject("InternetExplorer.Application")這個
但這樣就不是WebBrowser1 物件了,會變成InternetExplorer物件操作,我要的是純WebBrowser1 物件來進行操作
我是在WebBrowser1.Navigate "http://www.google.com/%22 這一行無法執行
其他的部分不用管他
主要的問題點在WebBrowser1沒有物件
請問如何加入WebBrowser1物件?
建議先在VBA上跑才能知道我要問的問題
這樣賺點數也太明顯了
我沒打算讓程式完整執行
只要WebBrowser1.Navigate "http://www.google.com/%22 能動
即使成空白頁也沒關係
畢竟我的目的不是執行的結果
主要要WebBrowser1能動就完成我後續的需求了
解問題前,請先清楚問題所需的環境
我一開始已事先說明這是Excel VBA
沒有說在VB上執行,請看清楚
這在debug上很重要
環境變因太多只會讓自己誤判
4 Answers
- 7 years agoFavorite Answer
Sub test()
WebBrowser1.Navigate "http://www.google.com/%22 ' 打開GOOGLE沒問題
Do Until WebBrowser1.ReadyState = READYSTATE_COMPLETE
DoEvents '分時間給其他地方
Loop '做迴圈直到讀回狀態是完成的
On Error Resume Next '這行根本沒有意義吧....
WebBrowser1.Navigate "about:blank" '所以每次都會變成空的....
End Sub
所以你這副程式就是拿來開空的頁面嗎....
試試看以下程式碼
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) '宣告API
Sub test()
WebBrowser.Navigate "http://www.google.com/%22 '打開GOOGLE
檢查狀態 '檢查是否Time-out
End Sub
Sub 檢查狀態()
Dim Time As Integer
Do Until WebBrowser.ReadyState = READYSTATE_COMPLETE '如果讀回狀態不成功就做迴圈
If Time > 300 Then Exit Do '300次Sleep10=300次10ms ,約3秒(自訂)超過3秒即逾時,跳出迴圈
Sleep 10 '沉睡10ms
DoEvents '分出時間給WebBrowser去更新讀回來的狀態,沒加一定Time-out
Time = Time + 1 '次數+1
Loop
If Time > 300 Then WebBrowser.Navigate "about:blank" '超出逾時時間3秒 開個空白頁
End Sub
VBA我不太了解有那些功能,不過VB可運行,本來逾時動作是用Timer元件來處理,後來因為不知道是否有此功能,就用API的SLEEP來處理
2014-07-28 17:44:01 補充:
你內文沒說清楚問題點,我以為是怎麼開都是空白頁勒...
回歸正題:Excel 2007 VBA測試功能正常
WebBrowser1沒有物件是跳出
----------------------------------------------------------------------------------
執行階段錯誤'424':
此處需要物件
----------------------------------------------------------------------------------
這個錯誤嗎?
如果是的話,原因在於元件沒被載入或是畫在介面上
2014-07-28 17:48:48 補充:
至於元件該載入哪個
控制項點右鍵選新增控制項找到
Microsoft Web Browser 把她點選(我這版點選是打叉叉!?)
然後按確定,控制項那邊就出現了一個地球
把地球在表單上拉出一個長方形介面,那就是瀏覽器了,執行你的副程式看看有沒有問題
2014-07-28 17:51:58 補充:
如回應並非你的需求請提供錯誤碼以及錯誤訊息或是再描述的更詳細以供除錯
2014-07-28 18:09:46 補充:
因為在公司都以VB6和VB.NET開發程式,而檔案都以資料庫跟Random File保存,再以表格顯示於介面上,包括印報表也是如此,所以從未接觸過Office的VBA
不過剛剛使用過之後,發現VBA算是個功能簡約的VB6,沒什麼太大的差異
另外,引用項目也添加了「Microsoft HTML Object Libaray」,這我剛剛測試時沒使用到,但功能正常,所以應該不在這次問題環境內
PS.問題點要先說,不然我以為程式碼有誤,在幫你檢查= =
2014-07-28 18:12:46 補充:
副程式 test 問題點在於
那樣寫不是永遠再跑迴圈就是離開迴圈結果變成空白頁
應該也要修改
Source(s): 自己, 自己, 自己, 自己 - Anonymous7 years ago
- Anonymous7 years ago
>這家不錯 lv333。cC買幾次啦真的一樣
哖働勌侷