【问题标题】:VBA Excel open multitude websites in the one IE windowVBA Excel 在一个 IE 窗口中打开多个网站
【发布时间】:2020-02-21 10:08:53
【问题描述】:

我已经使用 VBA Excel 打开了 Internet Explorer。

我的代码如下:

 Sub IE()
 Dim ie As object
 Dim location
 'Dim button
 Set ie = CreateObject("InternetExplorer.Application")
 With ie
     .Visible = True
     .Navigate ("https://fulcrum/NewBuild/Record.aspx?ID=" & Range("B1").Value)
     .Navigate ("http://gcommswebmapgb/portal/")
     .Top = 5
     .Left = 5
     .Height = 1300
     .Width = 1900
     While ie.ReadyState <>4
         Do Events
     Wend
     Set location = .document.getElementById("__VIEWSTATE")
     'Set button = .document.getElementById("btnContainer").Children(0)
     'button.Click
     While ie.ReadyState <> 4
         DoEvents
     Wend
  End With
  Set ie = Nothing   

 End Sub

在这种情况下,第二个链接被打开,第一个被完全省略。 最重要的是,我想在同一个窗口中打开它们(作为不同的选项卡)。

我在这里找到了一些解决方案:

Excel VBA control IE

VBA Excel input data into already opened ie window

看起来需要一些功能的地方。 有人可以帮忙吗?

【问题讨论】:

  • 您可以使用.Navigate ("http://gcommswebmapgb/portal/", CLng(2048)),这将在新选项卡中打开第二页,但您没有解决任何问题...您的以下代码将引用您打开的最后一个站点。你必须使用不同的方法来做你想做的事。看here,请...
  • 那么如何让它们同时打开呢?我应该再次扩展 With->End With 语句吗?
  • 如果你按照我向你展示的那样进行,它们都会打开。但是,既然你不能一次引用其中一个,为什么要这样做呢?你简单的不能用这种方式。
  • 没有伙伴。当我输入你给我看的五线谱时,错误显示“预期=”和“语法错误”。
  • 那么,试试.Navigate "http://gcommswebmapgb/portal/", CLng(2048)

标签: excel vba internet-explorer


【解决方案1】:

我建议您将两个 URL 存储在如下变量中。

 Dim url1, url2 As String
 url1 = "https://fulcrum/NewBuild/Record.aspx?ID=" & Range("B1").Value
 url2 = "http://gcommswebmapgb/portal/"

然后尝试将 URL 变量传递给 .Navigate,不带圆括号,如下所示。

 With ie
     .Visible = True
     .Navigate url1
     .Navigate url2, CLng(2048)

它将修复您的语法错误,网址将在 2 个选项卡中打开。

修改代码:

 Sub ie()
 Dim ie As Object
 Dim location
 'Dim button
 Dim url1, url2 As String
 url1 = "https://fulcrum/NewBuild/Record.aspx?ID=" & Range("B1").Value
 url2 = "http://gcommswebmapgb/portal/"
 Set ie = CreateObject("InternetExplorer.Application")
 With ie
     .Visible = True
     .Navigate url1
     .Navigate url2, CLng(2048)
    ' .Top = 5
    ' .Left = 5
    ' .Height = 1300
    ' .Width = 1900
     While ie.ReadyState <> 4
         'Do Events
     Wend
     'Set location = .document.getElementById("__VIEWSTATE")
     'Set button = .document.getElementById("btnContainer").Children(0)
     'button.Click
     While ie.ReadyState <> 4
         DoEvents
     Wend
  End With
  Set ie = Nothing

 End Sub

输出:

此外,您需要检查您的代码是否正确引用了正确的选项卡以执行更多代码。请注意,您不能同时自动化两个页面。您需要使用 VBA 代码切换选项卡才能在特定页面上执行代码。

【讨论】:

  • 完美!有用!但是,在您的代码中,尺寸参数已被关闭。我设置了 Top & Left & Height & Width 参数以打开整个窗口。即使我将它保存在代码中,它现在也不起作用。此外,我还想添加另一个网站。我应该放 CLng(3072) 或类似的东西吗?
  • 对。保持 CLng(2048) 足以打开第三个标签,我相信下面的也是。我想设置标签尺寸,我在上面写过。无论如何,非常感谢你的帮助。这对我的工作来说是一个里程碑!
  • 只需删除这些参数之前的'。我将评论用于测试目的。它会让你的维度再次起作用。
  • 我就是这么做的。我没有保留它们,但它仍然很小。我相信,也许它们在代码中的位置错误,因此被 VBA 省略了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-29
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多