5

VBA を使用すると、次を使用して 3 つの異なるタブを持つ InternetExplorer オブジェクトを作成できます。

Option Explicit

Public Enum IE_READYSTATE
    Uninitialised = 0
    Loading = 1
    Loaded = 2
    Interactive = 3
    complete = 4
End Enum

Sub Example_Click()
Dim ieApp As clsIE

    'Create IE and login
    If ieApp Is Nothing Then
        Set ieApp = New clsIE
        With ieApp

            'IE Tab1
            .IE.Visible = True
            .IE.navigate "http://www.bbc.co.uk/news/"
            Do While .IE.Busy Or Not .IE.readyState = IE_READYSTATE.complete: DoEvents: Loop

            'IE Tab2
            .IE.Navigate2 "http://www.bbc.co.uk", CLng(2048)
            Do While .IE.Busy Or Not .IE.readyState = IE_READYSTATE.complete: DoEvents: Loop

            'IE Tab3
            .IE.Navigate2 "http://www.bbc.co.uk", CLng(2048)
            Do While .IE.Busy Or Not .IE.readyState = IE_READYSTATE.complete: DoEvents: Loop


        End With
    End If

End Sub

これらのタブにアクセスするにはどうすればよいですか....

  1. 特定のタブを終了/閉じますか?
  2. 特定のタブで新しい URL に移動しますか?
  3. 特定のタブ DOM にアクセスしますか?

複数のタブではなく単一のタブでこれらすべてを行う方法を知っていますか?

4

4 に答える 4

5

簡単な回避策は、新しいタブをオブジェクトに再割り当てすることです

IE.navigate "http://www.bbc.co.uk/news/", CLng(2048)
Do While IE.Busy Or Not IE.readyState = IE_READYSTATE.complete: DoEvents: Loop
With CreateObject("Shell.Application").Windows
Set IE = .Item(.Count - 1)
End With
于 2014-09-05T00:28:50.663 に答える
1

VBScript を使用して、1 つの IE ウィンドウでタブをグループ化するという問題を解決した方法を次に示します。関数が、URL がtabGroupS(たとえば " http://stackoverflow.com ") で始まるタブを含む IE ウィンドウを見つけた場合、このウィンドウに新しいタブを追加し、このタブを返します。それ以外の場合は、新しいウィンドウを開きます。

Private Function getNewTab(tabGroupS)
    Dim i, objs, cnt, openflag
    Set objs = CreateObject("Scripting.Dictionary")
    Set SWObj = CreateObject("Shell.Application").Windows()
    For Each i In SWObj
        If LCase(Right(i.FullName, 12)) = "iexplore.exe" Then objs.Add objs.Count, i
    Next
    cnt = SWObj.Count
    For Each i In objs
        If Left(objs(i).LocationURL, Len(tabGroupS)) = tabGroupS Then
            openflag = True
            objs(i).Navigate2 "about:blank", &H800
            Exit For
        End If
    Next
    If Not openflag Then
        Set getNewTab = CreateObject("InternetExplorer.Application")
        getNewTab.Visible = True
        Exit Function
    End If
    Do: WScript.Sleep 100: Loop Until SWObj.Count > cnt 'wait until new tab is opened
    For Each i In SWObj
        If LCase(Right(i.FullName, 12)) = "iexplore.exe" Then
            If Not hasObj(i, objs) Then
                Set getNewTab = i
                Exit Function
            End If
        End If
    Next
End Function

Function hasObj(obj, col)
    For Each i In col
        If obj Is col(i) Then
            hasObj = True
            Exit Function
        End If
    Next
End Function
于 2013-11-21T08:11:20.847 に答える