2
我試圖從一個函數返回一個HTMLElementCollection。但是,函數式方式一切正常,但是當代碼返回到調用子時,分配給函數輸出「myTable」的變量將顯示「<無變量>」。我試過將集合作爲scripting.dictionary的一部分傳回,但結果相同。VBA函數不返回HTMLElementCollection對象
任何幫助表示讚賞。謝謝大家。
Sub updateReports()
'//Function gathers latest report information and adds to sheets("Reports")
'//URL
Dim strURL As String
strURL = "http://www.ndbc.noaa.gov/station_page.php?station=62103"
Dim myTable As HTMLElementCollection
Set myTable = getTable(strURL)
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
'From here on, "myTable" listed as '<No Variables>'.
'HTMLElementCollection not sucessfully returned.
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
End Sub
Public Function getTable(strURL As String) As Variant
'//Downloads HTML Table from strURL
'//Create HTTP Object
Dim oXMLHTTP As Object
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
oXMLHTTP.Open "GET", strURL, False
oXMLHTTP.send
Dim HTMLDoc As New HTMLDocument
If oXMLHTTP.Status = 200 Then
HTMLDoc.body.innerHTML = oXMLHTTP.responsetext
Set getTable = HTMLDoc.getElementsByTagName("tr")()
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
'Under "getTable" call stack, getTable shows correct object (HTMLElementCollection)
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
End If
End Function
嗨阿德里亞諾。感謝您的迴應。 我嘗試了你說的和它的工作。然後,我一次做了一次修改,準確地指出問題。 原來,它是main子文件中HTMLDocument的初始化,並將其作爲參數傳遞給函數。我猜如果我想使用它的庫,HTML對象體首先需要在子文件中初始化?! 無論如何,謝謝一堆! – Soulwake
這只是一個猜測,但我認爲當你在函數中初始化HTMLDoc時,當你離開函數時,這個對象被破壞。因此myTable嘗試調用Null上的getElementsByTagName,因爲HTMLDoc對象已被銷燬。你可以通過初始化main中的對象來糾正它,它會一直保持活動狀態直到執行結束。 –