我正在从VBA进行一些互联网搜索,并且我有一条线
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, textures[0]);
gl.activeTexture(gl.TEXTURE33);
gl.bindTexture(gl.TEXTURE_2D, textures[1]);
其中Set valueResult = currPage.getElementById("rg_s").getElementsByTagName("IMG")
被声明为currPage
我想知道HTMLDocument
Dim
如何实现:
valueResult
类型)当我查看本地窗口时,我被告知Variant
给出了它
Set
类型,但在我DispHTMLElementCollection
时,这不是一个选项。我Dim
getElementsBy*
实际上返回read而不是数组,所以我一直在尝试遵循该途径,但找不到任何特定的VBA。
那我应该怎么声明呢? - 目前我刚刚获得Dim valueResult As Object
,但这并不比Variant
好,并且没有提供IntelliSense提示。< / p>
NB。我勾选了Microsoft HTML对象库
答案 0 :(得分:2)
它应该是IHTMLElementCollection
类型。
Dim valueResult As IHTMLElementCollection
'// your code here
Set valueResult = currPage.getElementById("rg_s").getElementsByTagName("IMG")
getElementsByTagName()
方法将返回Collection
,因为可能存在多个匹配项。 getElementById()
方法将返回一个元素,因此IHTMLElement
快速示例:
Sub test()
Dim col As IHTMLElementCollection
Dim item As IHTMLElement
Set IE = CreateObject("InternetExplorer.Application")
IE.Navigate "http://www.google.co.uk"
While IE.ReadyState <> 4
DoEvents
Wend
Set col = IE.Document.getElementsByTagName("a")
For Each i In col
Set item = i
Debug.Print item.outerText
Next
IE.Quit
End Sub
答案 1 :(得分:1)
早期和后期绑定有其优点和缺点,但如果您希望获得intellisense的支持,则需要引用类型库。当声明为Object
时,没有intellisense可用,因为在设计时Visual Basic运行时无法知道变量将包含哪种引用。这将在运行时首先知道。
然后这段代码:
Set IE = CreateObject("InternetExplorer.Application")
可以替换为这样的代码:
Dim IE As SHDocVw.InternetExplorer
Set IE = New SHDocVw.InternetExplorer
如果不引用Microsoft HTML Object Library
,Dim col As IHTMLElementCollection
之类的声明将无法编译。
然后Object Browser
是你的朋友: