VBA Excel открывает множество веб-сайтов в одном окне IE - PullRequest
0 голосов
/ 20 февраля 2020

Мне удалось открыть Inte rnet Explorer с помощью VBA Excel.

Мой код выглядит следующим образом:

 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

В этом случае открывается 2-я ссылка и 1-я один полностью опущен. Кроме того, я хотел бы открыть их в том же окне (как на другой вкладке).

Я нашел несколько решений здесь:

Управление Excel VBA IE

VBA Excel вводит данные в уже открытое ie окно

, где выглядит, что некоторые функции необходимы. Кто-нибудь может помочь?

1 Ответ

1 голос
/ 21 февраля 2020

Я предлагаю вам хранить оба 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)

Это исправит вашу синтаксическую ошибку, и URL будут открыты в 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

Вывод:

enter image description here

Кроме того, вам необходимо проверить, что ваш код правильно ссылается на правильную вкладку для выполнения дополнительного кода. Обратите внимание, что вы не можете автоматизировать обе страницы одновременно. Вам нужно переключать вкладки, используя код VBA, чтобы выполнить код на указанной странице c.

...