【发布时间】:2014-11-09 19:39:13
【问题描述】:
这是我在 stackflow 上的第一篇文章 :) 我已经用谷歌搜索 VBA 知识并编写了一些 VBA 大约一个月。
我的电脑信息:
1.window 8.1
2.excel 2013
3.ie 11
我的 Excel 参考资料
微软对象库:是的
Microsoft Internet Controls:是的
Microsoft Form 2.0 对象库:是
Microsoft Script Control 1.0:是的
问题:
我试图使用 VBA 自动从 Internet Explorer 检索数据。 我想从名为“u_0_1”的 id 中检索输入标签中的值,该 id 位于名为“facebook”的 id 下。我期待在单元格 c2 上检索值“AQFFmT0qn1TW”。但是,在我运行 VBA“运行时错误'91':对象变量或未设置块变量后,它弹出了这个消息。 我已经使用不同的方法尝试了几个星期,例如,
1.getelementsbyClassname
2.getelementbyid
3.getelementsbyTagname
但它不起作用。
网址:
http://coursesweb.net/javascript/getelementsbytagname
下面是我的 VBA 代码。请大家帮帮我好吗?
Private Sub CommandButton1_Click()
Dim ie As Object
Dim Doc As HTMLDocument
Dim getThis As String
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = 0
ie.navigate "http://coursesweb.net/javascript/getelementsbytagname"
Do
DoEvents
Loop Until ie.readyState = 4
Set Doc = ie.document
getThis = Trim(Doc.getElementById("u_0_1")(0).getElementsByTagName("input")(0).Value)
Range("c2").Value = getThis
End Sub
【问题讨论】:
-
getElementById("u_0_1")返回单个元素而不是集合,因此您不需要在其后添加(0)。 -
嗨蒂姆,谢谢你的提示。所以只有 getelementbyId 返回一个元素,其他的 getelementsby method() 返回一个集合对吗?
-
在任何 HTML 文档中,Id 属性都应该是唯一的,因此该方法只返回它找到的第一个。类和标签显然可以多次出现:所以这些方法返回集合。线索在方法名称中 - 如果它是 getElementsbyXXXX,那么它会返回一个集合。
-
谢谢!这是一个非常有用的信息。
标签: vba getelementbyid getelementsbytagname