Excel VBA создает встроенный WebBrowser и использует его
4 oMG [2013-10-26 01:49:00]
Привет. Я пытаюсь динамически создавать веб-браузер внутри электронной таблицы, а затем использовать его, но функции WebBrowser не работают
Вот как я создаю WebBrowser
Set myWebBrowser = Sheets("test").OLEObjects.Add(ClassType:="Shell.Explorer.2", Link:=False, DisplayAsIcon:=False, left:=147, top:=60.75, width:=141, height:=96)
Это будет работать
myWebBrowser.top = 10
Но это даст мне ошибку
myWebBrowser.Navigate ("about:blank")
Любые идеи о том, что я должен сделать, спасибо
UPDATE:
Это также не сработает и даст ошибку:
myWebBrowser.Object.Document.body.Scroll = "no"
myWebBrowser.Object.Silent = True
myWebBrowser.Object.Navigate ("about:blank")
While myWebBrowser.Object.ReadyState <> READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("0:00:01"))
Wend
myWebBrowser.Object.Refresh
ОБНОВЛЕНИЕ 2 (почти там):
Теперь мне нужен способ удалить Sheet2.Activate Sheet1.Activate
Sheet2.Activate
Sheet1.Activate
Set wb = myWebBrowser.Object
With wb
.Silent = True
.Navigate "about:blank"
Do While .ReadyState <> READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("0:00:01"))
Loop
.Document.Open "text/html"
Do While .ReadyState <> READYSTATE_COMPLETE
Application.Wait (Now + TimeValue("0:00:01"))
Loop
.Document.write html
.Document.Close
.Document.body.Scroll = "no"
.Refresh
Debug.Print .Document.body.innerHTML
End With
browser vba excel ole webbrowser-control
2 ответа
6 Решение Tim Williams [2013-10-26 01:58:00]
myWebBrowser.Object.Navigate "http://www.google.com"
более полный пример:
Sub AddWebBroswerToWorksheet()
Dim myWebBrowser
Dim wb, doc, x As Long
Sheet2.Activate
Sheet1.OLEObjects(1).Delete
Set myWebBrowser = Sheet1.OLEObjects.Add(ClassType:="Shell.Explorer.2", _
Left:=147, Top:=60.75, Width:=400, Height:=400)
Set wb = myWebBrowser.Object
With wb
.Navigate "about:blank"
.Document.Open "text/html"
For x = 1 To 100
.Document.write "hello world<br>"
Next x
.Document.Close
.Document.body.Scroll = "no"
Debug.Print .Document.body.innerHTML
End With
Sheet1.Activate 'switching back to the sheet seems to
' ' trigger the display of the object
End Sub
0 Noseratio [2013-10-26 04:16:00]
Вам нужно перекачать сообщения Windows внутри цикла WebBrowser.ReadyState <> READYSTATE_COMPLETE, чтобы это работало. Вызов DoEvents/Sleep внутри петель делает это, но имеет свои собственные последствия. Проверьте эти ответы для получения более подробной информации и примера кода: