使用Excel VBA读取网页

我想用Excel VBA读取网页。 我如何执行这个任务? 这甚至有可能吗?

来自Excel 2003,是的,这是可能的 – 你可以使用SHDocVw.InternetExplorerMSHTML.HTMLDocument对象来调用一个网页,获得控制和与DOM对象交互。 创buildMicrosoft HTML对象库(… \ system32 \ MSHTML.TLB)和Microsoft Internet控制(… \ system32 \ ieframe.dll)的引用后,可以使用以下示例进行操作:

 Sub Test() Dim Browser As SHDocVw.InternetExplorer Dim HTMLDoc As MSHTML.HTMLDocument Set Browser = New SHDocVw.InternetExplorer ' create a browser Browser.Visible = True ' make it visible Application.StatusBar = ".... opening page" Browser.navigate "http://www.google.com" ' navigate to page WaitForBrowser Browser, 10 ' wait for completion or timeout Application.StatusBar = "gaining control over DOM object" Set HTMLDoc = Browser.document ' load the DOM object WaitForBrowser Browser, 10 ' at this point you can start working with the DOM object. Usefull functions are ' With HTMLDoc ' .getElementByID(string) ' .getElementsByTagName(string) ' .getElementsByName(string) ' .getAttribute(string) ' .setAttribute string, string .... to change field values, click a button etc. ' End With Application.StatusBar = "" ' time to clean up Browser.Quit Set HTMLDoc = Nothing Set Browser = Nothing End Sub Sub WaitForBrowser(Browser As SHDocVw.InternetExplorer, Optional TimeOut As Single = 10) Dim MyTime As Single MyTime = Timer Do While Browser.Busy Or (Timer <= MyTime + TimeOut) DoEvents Loop ' if browser still busy after timeout, give up If Browser.Busy Then MsgBox "I waited for " & Timer - MyTime & " seconds, but browser still busy" & vbCrLf & _ "I give up now!" End End If End Sub 

您可以使用VBA来自动化IE(通过Google提供大量示例),或者您可以使用MSHTTP实例直接获取页面(同样也可以在Web上使用大量示例)。 哪一个最适合你的需求将取决于你想要做什么。 很难多说没有更详细的要求。