Vba 从Internet Explorer获取数据

Vba 从Internet Explorer获取数据,vba,excel,Vba,Excel,我正在学习如何从Internet Explorer中提取源数据。我从YouTube上学会了如何编写代码。然而,当我想修改它来测试另一个网站时,我遇到了一个错误。有人能给我建议吗 测试网站: 子单击表单按钮() 模糊的物体 变光窗体为变型,按钮为变型 设置ie=CreateObject(“InternetExplorer.Application”) input1=InputBox(“请输入关键字”) 与ie .Visible=True .导航(“http://www.oxforddictionar

我正在学习如何从Internet Explorer中提取源数据。我从YouTube上学会了如何编写代码。然而,当我想修改它来测试另一个网站时,我遇到了一个错误。有人能给我建议吗

测试网站:

子单击表单按钮()
模糊的物体
变光窗体为变型,按钮为变型
设置ie=CreateObject(“InternetExplorer.Application”)
input1=InputBox(“请输入关键字”)
与ie
.Visible=True
.导航(“http://www.oxforddictionaries.com")
而ie.ReadyState 4
多芬特
温德
ie.document.getelementsbyname(“q”).Item.innertext=input1
Set form=ie.document.getElementsbytagname(“表单”)
设置按钮=表单(0)。onsubmit
表格(0)。提交
在忙的时候做
Set TDelements=.document.getElementsbytagname(“td”)
r=0
c=0
对于TDelements中的每个TDelement
表1.范围(“A1”).偏移量(r,c).值=TDelement.innertext
r=r+1
下一个
以
设置ie=无
端接头

虽然您对收到的错误不是很明确,但在我看来,首先会给您带来问题的是您使用
getElementsByName()
的方式

getElementsByName()
返回具有指定的
名称
属性值的节点集合,在您的示例中是
name=“q”
。对于要与之交互的页面,有两个节点包含
name=“q”
,您可以使用以下语句进行验证:

MsgBox ie.document.getElementsByName("q").length    ' => Reports "2"
找到的第一个节点似乎是移动用户的搜索框。第二个是桌面用户的搜索框。因此,如果要更改其中一个节点的
innerText
,则需要按索引寻址单个节点:

Dim e
Set e = ie.document.getElementsByName("q")(0)  ' Get first instance
Set e = ie.document.getElementsByName("q")(1)  ' Or, get second instance
e.innerText = "some text"
然而,这就引出了你的下一个问题。这些元素是
元素,因此设置
innerText
对您没有任何好处。我猜您要做的是设置它们的
,您可以这样做:

Set e = ie.document.getElementsByName("q")(1)  ' Get desktop search box
e.Value = "some text"

虽然您对接收到的错误不是很明确,但在我看来,首先会给您带来问题的是您使用
getElementsByName()
的方式

getElementsByName()
返回具有指定的
名称
属性值的节点集合,在您的示例中是
name=“q”
。对于要与之交互的页面,有两个节点包含
name=“q”
,您可以使用以下语句进行验证:

MsgBox ie.document.getElementsByName("q").length    ' => Reports "2"
找到的第一个节点似乎是移动用户的搜索框。第二个是桌面用户的搜索框。因此,如果要更改其中一个节点的
innerText
,则需要按索引寻址单个节点:

Dim e
Set e = ie.document.getElementsByName("q")(0)  ' Get first instance
Set e = ie.document.getElementsByName("q")(1)  ' Or, get second instance
e.innerText = "some text"
然而,这就引出了你的下一个问题。这些元素是
元素,因此设置
innerText
对您没有任何好处。我猜您要做的是设置它们的
,您可以这样做:

Set e = ie.document.getElementsByName("q")(1)  ' Get desktop search box
e.Value = "some text"

你能告诉我们错误是什么吗?请编辑您的问题并包含错误。错误是运行时错误“91”:对象变量或未设置块变量。您能告诉我们错误是什么吗?请编辑问题并包含错误。错误为运行时错误“91”:未设置对象变量或带块变量