【发布时间】:2014-02-10 21:38:57
【问题描述】:
我正在尝试编写一个 vba 代码以遵循此过程:
自动填写并提交 Web 表单(打开一个新网页,答案为 http://ec.europa.eu/taxation_customs/vies/?locale=en)
找到新网页的地址(因为我需要阅读这个内容)
读取html表格的特定单元格(公司名称)
您可以尝试使用增值税号 FR(FRANCE) 和 27435044714 手动提交。 它将返回一个包含公司名称的页面。
基本上我正在努力提取公司的名称。
第 1 步效果很好,独立于第 2 步和第 3 步。 第 2 步和第 3 步在同一个 Sub 上:
宏从第 2 步开始(查找打开的网页)
Sub recup()
Dim SWs As SHDocVw.ShellWindows, IE As SHDocVw.InternetExplorer
'Establish link to IE application
Set SWs = New SHDocVw.ShellWindows
For Each IE In SWs
If Left(IE.LocationURL, 4) <> "http" Then
GoTo autre
End If
Address = IE.LocationURL
GoTo vabene 'avoid explorer windows/etc this way
autre:
Next
vabene:
然后,我继续步骤 3 以提取文本。
IE.Visible = True
Dim xobj
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
Set xobj =IE.Document.getElementById("vatResponseFormTable").getElementsByClassName("labelStyle").Item(3)
Set xobj = xobj.getElementsByTagName("td").Item(0)
result = xobj.innerText
Set xobj = Nothing
IE.Quit
Set IE = Nothing
End Sub
我的问题:宏停止在线(运行时错误91):
结果 = xobj.innerText
这似乎来自上一行
设置 xobj = xobj.getElementsByTagName("td").Item(0)
我在网络和这个论坛上搜索了很多(直到这一步它帮助了我)。如果你能帮助我,那将节省我的一周!
【问题讨论】:
-
为什么
xobj在result = xobj.innerText行之前设置了两次?另外,你确定Set xobj = xobj.getElementsByTagName("td").Item(0)吗?你确定不是从Item(1)开始的吗? -
@simpLE MAN 不,我不确定。我的问题是我可以访问 td 名称,但我想访问下一个 td 并且没有参考。因此,如果我让
Set xobj =IE.Document.getElementById("vatResponseFormTable").getElementsByClassName("labelStyle").Item(3),则返回是“名称”。我想要下一个文本,例如“Company ABC”....
标签: vba excel internet-explorer