VBA从网页中提取文本值?

时间:2017-05-10 16:12:17

标签: excel vba

我有一个网页,其中包含HTML Span中的一些文字,如下所示:

<span id="ctl00_ContentPlaceHolder1_FormView1_GridView1_ctl02_lb_ExpiryDate">Expiry Date : 16/02/2018</span>

我正在尝试使用以下代码将此值显示为excel中的消息:

Sub PullExpiry()

Dim appIE As Object
Set appIE = CreateObject("internetexplorer.application")

With appIE
    .Navigate "https://www.brcdirectory.com/InternalSite//Site.aspx?BrcSiteCode=" & Range("J6").Value
    .Visible = True
End With

Do While appIE.Busy Or appIE.ReadyState <> 4
    DoEvents
Loop


Set getPrice = appIE.Document.getElementById("ctl00_ContentPlaceHolder1_FormView1_GridView1_ctl02_lb_ExpiryDate")
Dim myValue As String
myValue = getPrice.innerText

appIE.Quit
Set appIE = Nothing

MsgBox myValue
End Sub

这是在我的笔记本电脑(操作窗口)上工作,但它不能在我的电脑上运行(也可以在操作窗口)。两个窗口都是相同版本的IE版本。我无法解释。

我在两个引用中都启用了Microsoft Office和Excel对象库。

我收到有关活动x组件无法创建内容的错误

请有人告诉我我哪里出错了吗?

1 个答案:

答案 0 :(得分:0)

您需要在引用中添加Microsoft Internet Controls才能创建对象。您可能需要在计算机上注册shdocvw.dll库。它可能已在您的笔记本电脑上注册,这就是为什么它可能会在您的计算机上轰炸。

<强> How to register a .dll

MSDN Documentation :查看C#示例前的最后一句话。

<强> Similar Question

在玩了一下并确保所有内容都已注册后,我的电脑上运行正常:

Public Sub ie()

    Dim ieApp As SHDocVw.InternetExplorerMedium
    Dim html As HTMLDocument

    Set ieApp = New SHDocVw.InternetExplorerMedium

    ieApp.Visible = True

    ieApp.Navigate "http://internalAddress/"

    Do While ieApp.Busy Or ieApp.ReadyState <> 4
        DoEvents
    Loop

    Set html = ieApp.Document.getElementById("myID")

End Sub