【问题标题】:Excel VBA Extracting Inner Text from href TagExcel VBA从href标签中提取内部文本
【发布时间】:2018-05-22 00:08:13
【问题描述】:
HTML 代码如下所示:
<div class="WebPageMessage">
<div class="WebPageMessageInformation">
<div class="Message">Your request has been scheduled. <a href="/MyAccount/QueuedJob.aspx?JobID=221816">Job # 221816. Click here To monitor Schedule</a><br>There are 0 job(s) already in the queue.</div></div></div>
期望的结果:提取文本“Job # 221816...”
这是我尝试使用的代码,但我收到“不支持对象”错误消息
Set foo = objIE.document.getElementsByClassName("Message").getElementsByTagName("a").innerText
任何帮助都会很棒
谢谢,节日快乐:)
【问题讨论】:
标签:
html
excel
href
innertext
vba
【解决方案1】:
这是因为您试图将Set 字符串(innerText)转换为对象。另外,你需要指定你想要的类名“Message”和你想要的标签名“a”。
你有两个选择:
选项一:先设置对象,再从foo抓取字符串
Dim foo As Object, myStr As String
Set foo = objIE.document.getElementsByClassName("Message")(0).getElementsByTagName("a")(0)
myStr = foo.InnerText
选项2:不要将对象分配给变量,直接抓取字符串。
Dim myStr As String
myStr = objIE.document.getElementsByClassName("Message")(0).getElementsByTagName("a")(0).innerText
注意我是如何将(0) 放在ClassName 和TagName 之后的吗?这完全取决于您的完整 HTML 代码。最好的方法是使用For Each...Next 语句来遍历所有类名或标记名,但您可以通过在后面放置 (i) 来指定您想要的类/标记名。注意到 getElements... 之后的“s”了吗?那是因为类和标签名称不是唯一的。唯一唯一的元素是 ID(注意 getElementByID() 中没有“s”。