Vba Can';t打印子系统中函数的结果
我创建了一个宏来从一个免费的代理站点中刮取代理。宏能够生成代理列表。但是,我的目的是从函数Vba Can';t打印子系统中函数的结果,vba,web-scraping,Vba,Web Scraping,我创建了一个宏来从一个免费的代理站点中刮取代理。宏能够生成代理列表。但是,我的目的是从函数GenerateProxy打印此子例程PrintProxies中的代理列表。我不明白如何从该函数返回最终可以在子例程中打印的结果集合 我试过: Function GenerateProxy() As Variant Dim oHttp As New ServerXMLHTTP60, Html As New HTMLDocument Dim iCol As New Collection, pI
GenerateProxy
打印此子例程PrintProxies
中的代理列表。我不明白如何从该函数返回最终可以在子例程中打印的结果集合
我试过:
Function GenerateProxy() As Variant
Dim oHttp As New ServerXMLHTTP60, Html As New HTMLDocument
Dim iCol As New Collection, pIP$, pPort$, elem As Object
With oHttp
.Open "GET", "https://www.us-proxy.org/", True
.send
While .readyState < 4: DoEvents: Wend
Html.body.innerHTML = .responseText
For Each elem In Html.getElementsByTagName("tbody")(0).getElementsByTagName("tr")
If InStr(elem.innerText, "yes") > 0 Then
pIP = elem.getElementsByTagName("td")(0).innerText
pPort = elem.getElementsByTagName("td")(1).innerText
iCol.Add pIP & ":" & pPort
End If
Next elem
End With
GenerateProxy = iCol.count
End Function
Sub PrintProxies()
Dim iCol As New Collection
iCol = GenerateProxy()
MsgBox "proxy list: " & iCol
End Sub
像这样:
子打印代理()
如长
iCol=生成氧()
MsgBox“代理列表:”&iCol
端接头
是的,至少有一些结果。我不能打印总收藏量iCol
而不是iCol.count
?谢谢,当然可以。您已经有了计数,因此为..创建一个。。下一步
打印集合中每个项的循环。将“函数GenerateProxy()作为变量”更改为“函数GenerateProxy()作为集合”。然后将“GenerateProxy=iCol.count”更改为“Set GenerateProxy=iCol”。最后,在PrintProxy中,将“iCol=GenerateProxy()”更改为“Set iCol=GenerateProxy”。然后需要一个循环来迭代iCol集合以打印每个项目。另外两个项目。1.阅读Set关键字。2.如果某个特定类型可以完成任务,请不要使用变体。变体在VBA中起着关键作用,但不应以您现有的方式使用。您应该编辑原始问题以添加当前代码作为更新。
Function GenerateProxy() As Collection
Dim oHttp As New ServerXMLHTTP60, Html As New HTMLDocument
Dim iCol As New Collection, pIP$, pPort$, elem As Object
With oHttp
.Open "GET", "https://www.us-proxy.org/", True
.send
While .readyState < 4: DoEvents: Wend
Html.body.innerHTML = .responseText
For Each elem In Html.getElementsByTagName("tbody")(0).getElementsByTagName("tr")
If InStr(elem.innerText, "yes") > 0 Then
pIP = elem.getElementsByTagName("td")(0).innerText
pPort = elem.getElementsByTagName("td")(1).innerText
Debug.Print pIP & ":" & pPort
iCol.Add pIP & ":" & pPort
End If
Next elem
End With
Set GenerateProxy = iCol
End Function
Sub PrintProxies()
Dim iCol As Collection, col As Variant
Set iCol = GenerateProxy
For Each col In iCol
Debug.Print col
Next col
End Sub