Я пытаюсь вернуть объект, содержащий все элементы <td>
с веб-страницы, используя VBA в excel. Этот код работал, когда все в одном Sub
, но теперь я пытаюсь разбить его на функции для улучшения readablilty и отладки. Объект правильно создан в моей функции, но, похоже, не возвращается правильно.Excel VBA, пустой объект, возвращаемый из функции
Это функция:
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
, так что это должно быть что-то о том, как я возвращаю объект?
Попробуйте поместить свой «Dim HTML As Object» вверху (из функции), это должна быть глобальной переменной в этом случае. –