Excel VBA,从函数返回的空对象
我想在Excel中使用VBA返回一个包含所有<td>
元素的对象。 这个代码在一个Sub
中工作,但是现在我试图把它分解成函数来提高可读性和debugging性。 该对象正确地在我的函数中创build,但似乎没有被正确返回。
这是function:
Public Function getTablesFromPage(url As String) As Object Dim HTML As Object Set HTML = CreateObject("htmlFile") With CreateObject("WinHttp.WinHttpRequest.5.1") .SetAutoLogonPolicy (0) .Open "GET", url .send If .Status = "200" Then HTML.body.innerHTML = .responseText Set getTablesFromPage = HTML.getElementsByTagName("td") Else MsgBox "HTTP " & .Status End If End With End Function 'at this point a watch on getTablesFromPage shows the correct object
这就是它在我的Sub
被调用的方式:
Dim TDelements As Object Set TDelements = getTablesFromPage(url) 'at this point TDelements is an empty object
这是我第一次写任何VBA,正如我所说,这一切都工作时,它是在同一个Sub
,所以它必须是关于我返回对象的方式?
我相信这是因为你在你的函数中声明了HTML作为一个对象,所以它不是你主程序的一个inscope对象。 您需要将HTML声明为模块级variables,或者在调用过程时将其作为“通过参考”参数来包含它