2013-12-11 47 views
2

我使用Excel中的VBA(Office 2010)浏览Internet Explorer中的网页。我的问题是我无法声明HtmlElement例如哪个.dll包含HTMLElement类?

Dim myHtmlEl As HtmlElement 

返回错误“用户定义类型未定义”。

我看到时,我想申报和InternetExplorer对象的实例之前这个问题。该解决方案是创建由工具参考>>引用... >> Microsoft Internet控制在VBA编辑。我的理解是,Microsoft Internet控制.dllInternetExplorer类的定义。

因此,要创建一个HtmlElement对象的实例,我需要引用定义该类的.dllMSDN表明.dll系统Windows窗体。我将它链接起来,但该类仍未定义。

我怎么知道哪些.dll文件包含HtmlElement类?

+2

添加引用“Microsoft HTML对象库” –

+0

如果由于某种原因,蒂姆的参考不适用于早期绑定工作,你可以尝试后期绑定'昏暗myHtmlEl作为Object'。 – Mike

+0

作品。但你如何查找我需要连接的参考? – cheezsteak

回答

2

一个late binding solution可满足您的需求。

Dim myHtmlElement As Variant 
Dim IE As Variant 

Set IE = CreateObject("InternetExplorer.Application") 
IE.Visible = True 

IE.Navigate "http://www.stackoverflow.com/" 

' Wait while site is loading 
While IE.Busy: DoEvents: Wend 

' Get An Element 
Set myHtmlElement = IE.Document.getElementById("myInput") 

' Set the value of an element 
If Not myHtmlElement Is Nothing Then myHtmlElement.Value = ActiveCell.Value 

' Click a button 
Set myHtmlElement = IE.Document.getElementById("searchButton") 
myHtmlElement.Click 

' Wait while site is loading 
While IE.Busy: DoEvents: Wend 

' Navigate the IE object 
Dim i As Integer 
For i = 0 To IE.Document.getElementsByTagName("a").Length - 1 
    If IE.Document.getElementsByTagName("div").Item(i).innerText Like "ab*" Then 
     ' Do Something 
    End If 
Next 

以上代码基于链接的MSDN论坛。