年底退出IE我實現了多種功能依賴於從下載一些網站的一些信息。在VBA函數
這樣的功能的最簡單的例子是:
Public Function getSomething(webAddress As String)
Dim html As HTMLObjectElement
Set html = getWebContents(webAddress)
Set elems = html.body.getElementsByTagName(tagName)
...
End Function
從網站上獲取的數據的功能是:
Public Function getWebContents(webAddress As String) As HTMLObjectElement
Dim ie As InternetExplorer
Dim html As HTMLDocument
Set ie = New InternetExplorer
ie.Visible = False
ie.Navigate webAddress
Do While ie.READYSTATE <> READYSTATE_COMPLETE
Application.StatusBar = "Trying ..."
DoEvents
Loop
Set getWebContents = ie.Document
'close down IE and reset status bar
'ie.Quit
Set ie = Nothing
Application.StatusBar = ""
End Function
的問題是,它似乎是我所需要的線ie.Quit要取消註釋以關閉IE實例。但是,當我取消註釋ie.Quit行
Set elems = html.body.getElementsByTagName(tagName)
生成錯誤。
看來,我不能用HTMLObjectElement通過函數返回getWebContents當IE已經辭去。如何處理?我可以實現一個try ... finally塊在getSomething函數中,並打開ie,並在finally塊中關閉。然而,我有許多類似的功能,並做出許多類似的嘗試......終於塊似乎是一個愚蠢的想法。
有什麼想法? 謝謝!
好的,這是否意味着我需要在每個函數中初始化(和退出)getSomething我在Excel表中使用? – Gandalf
是的,但在上面的例子中,爲了使函數正常工作,IE對象必須保留在內存中,因此您無法控制'ie.Quit'。 –
謝謝!看來VBA並不是一個非常靈活的工具。 – Gandalf