【发布时间】:2015-10-19 22:32:24
【问题描述】:
问题是这一行:
Set TrackID2 = oIE.document.getelementbyid("main-search-box")
基本上,我需要 VBA 来打开一个站点的两个实例(在 2 个选项卡中),找到搜索框并输入并提交一个字符串。
我打开了选项卡,但我找不到 VBA 将正确的字符串输入到 IE 实例中的第二个选项卡的方法。对,现在它打开了 2 个选项卡,但是将两个字符串都输入到第一个选项卡中并在那里搜索了两次,而第二个选项卡只打开了地址。
如何编辑代码以将 VBA 指向第二个选项卡,而不是像现在这样的第一个选项卡?
提前感谢您的帮助!
Sub TestIE()
Dim IE As Object
Dim TrackID As Object
Dim TrackID2 As Object
Dim address As String
address = "https://www.google.com/"
Const navOpenInNewTab = &H800
Set oIE = CreateObject("InternetExplorer.Application")
oIE.Visible = True
oIE.Navigate address
Do Until oIE.readystate = 4:
DoEvents: Loop
Set TrackID = oIE.document.getelementbyid("main-search-box")
TrackID.Value = ActiveSheet.Range("a1")
TrackID.form.submit
oIE.Navigate2 address, CLng(navOpenInNewTab)
Do Until oIE.readystate = 4:
DoEvents: Loop
Set TrackID2 = oIE.document.getelementbyid("main-search-box")
TrackID2.Value = ActiveSheet.Range("A2")
TrackID.form.submit
End Sub
【问题讨论】:
-
为什么不在同一个窗口/选项卡中执行每个搜索?您需要同时打开窗户吗?
-
是的,我确实需要同时打开所有这些以进行比较。一旦我弄清楚代码,我可能会将其扩展为同时拥有 5-8 个选项卡。
-
表单提交后标签 URL 是否不同?如果是,那么您可以从此处调整代码以选择“未提交”选项卡:vbazone.com/?p=89
-
提交表单后,URL 会发生变化。我的 VBA/编程经验非常基础,感谢您的建议,但该代码似乎超出了我的想象。你能指出我可以适应的部分吗?无论如何,我都感谢您的反馈。谢谢!
-
查看here发布的答案
标签: vba internet-explorer