2017-02-17 207 views
2

我想使用VB脚本在IE上打开几个不同的网站,他们将每隔10秒刷新所有网页。但现在我有这个代码,它只能刷新第一个网页,第二个网页根本不刷新。你能帮忙吗?非常感谢。如何使用VB脚本刷新IE上的所有网页?

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窗口,因此它具有与IE窗口相同的HWND。因此,在导航之后,您可以检查具有相同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