2017-02-17 1 views
2

Я пытаюсь использовать скрипт vb для открытия нескольких разных сайтов в IE, и они будут обновлять все веб-страницы каждые 10 секунд. но теперь у меня есть эти коды, он может только обновить первый веб-сайт, второй веб-сайт не обновляется вообще. Не могли бы вы помочь с этим? Большое спасибо.Как обновить все веб-страницы в IE с помощью скрипта VB?

Set objExplorer = CreateObject("InternetExplorer.Application") 
WebSite ="http://keono.com/" 
with objExplorer 
.Navigate2 WebSite 
.AddressBar = 1 
.Visible = 1 
.ToolBar = 1 
.StatusBar = 1 
end with 

WebSite = "http://enquotemarketing.com/" 
with objExplorer 
.Navigate2 WebSite, &h800 
.AddressBar = 1 
.Visible = 1 
.ToolBar = 1 
.StatusBar = 1 
end with 


Do While True 
WScript.Sleep 10000 ' 10 seconds 
objExplorer.Refresh() 
Loop 

ответ

1

Насколько я понимаю, вы пытаетесь открыть веб-страницы на разных вкладках IE, а затем обновите их. Новая вкладка, открытая через .Navigate2 URL, &h800, создается в отдельном совершенно новом экземпляре IE, но поскольку новая вкладка принадлежит окну IE, она имеет тот же HWND, что и окно IE. Таким образом, после навигации вы можете проверить каждое окно проводника с тем же HWND и сохранить новое созданное окно для массива. Затем обновите каждое окно IE внутри него. Вот пример кода:

Option Explicit 

Dim aTabs, aURLs, oIE, lIEHwnd, i, j, oWnd 

' Navigate URLs in tabs 
aURLs = Array(_ 
    "http://keono.com/", _ 
    "http://enquotemarketing.com/", _ 
    "http://stackoverflow.com/" _ 
) 
ReDim aTabs(UBound(aURLs)) 
Set oIE = CreateObject("InternetExplorer.Application") 
oIE.Visible = True 
lIEHwnd = oIE.Hwnd ' IE window HWND 
For i = 0 To UBound(aURLs) 
    oIE.Navigate2 aURLs(i), &H800 ' Open the page in another IE instance 
    ' Process until new IE instance is created 
    Do 
     j = 0 
     For Each oWnd In CreateObject("Shell.Application").Windows 
      If oWnd.Hwnd = lIEHwnd And Not (oWnd Is oIE) Then 
       j = j + 1 
       Set aTabs(i) = oWnd ' Assuming the last window 
      End If 
     Next 
    Loop Until j = i + 1 
Next 
oIE.Quit ' Close 1st empty tab 
' Wait until all tabs are ready 
For Each oIE In aTabs 
    Do While oIE.ReadyState < 3 Or oIE.Busy 
     WScript.Sleep 10 
    Loop 
Next 
' Refresh tabs 
Do 
    WScript.Sleep 10000 
    For Each oIE In aTabs 
     oIE.Refresh 
    Next 
Loop 
+0

Отличный ответ, не знаю, почему выборка VBA актуальна. Этот вопрос касается VBScript и добавления образцов VBA просто мешает ответ. – Lankymart

+0

@ Lankymart это правильно, удаленный VBA, в любом случае он может быть найден в истории изменений. – omegastripes

Смежные вопросы