コピペで使えるVBAのコード置き場

Internet Explorerを操作するクラス

筆箱にVBAのカンニングペーパーを入れる係のみすくです。こんにちは。

IEの操作に必要なものをどんどんここに足していく作戦なので、
定期的に更新します。

参照設定
Microsoft Shell Controls And Automation
Microsoft Internet Controls
Microsoft HTML Object Library

Option Explicit

Public Enum eHWnd
   SW_HIDE = 0             'ウィンドウを非表示にし、他のウィンドウをアクティブにします。
   SW_SHOWNORMAL = 1       'ウィンドウをアクティブにして表示します。ウィンドウが最小化または最大化されていた場合は、その位置とサイズを元に戻します。初めてウィンドウを表示するときには、このフラグを指定してください。
   SW_SHOWMINIMIZED = 2    'ウィンドウをアクティブにして、最小化します。
   SW_MAXIMIZE = 3         'ウィンドウを最大化します。
   SW_SHOWNOACTIVATE = 4   'ウィンドウを直前の位置とサイズで表示します。
   SW_SHOW = 5             'ウィンドウをアクティブにして、現在の位置とサイズで表示します。
   SW_MINIMIZE = 6         'ウィンドウを最小化し、Z 順位が次のトップレベルウィンドウをアクティブにします。
   SW_SHOWMINNOACTIVE = 7  'ウィンドウを最小化します。SW_SHOWMINIMIZED と似ていますが、この値を指定した場合は、ウィンドウはアクティブ化されません。
   SW_SHOWNA = 8           'ウィンドウを現在のサイズと位置で表示します。SW_SHOW と似ていますが、この値を指定した場合は、ウィンドウはアクティブ化されません。
   SW_RESTORE = 9          'ウィンドウをアクティブにして表示します。
   SW_SHOWDEFAULT = 10     'アプリケーションを起動したプログラムが 関数に渡した 構造体で指定された SW_ フラグに従って表示状態を設定します。
End Enum
Option Explicit

'---------------------------------------
'Win32Api
'---------------------------------------
Private Declare Function IsIconic Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function ShowWindowAsync Lib "user32.dll" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

'---------------------------------------
' 変数
'---------------------------------------
Dim objIE As New InternetExplorer

Private Sub Class_Terminate()
    Set objIE = Nothing
End Sub

'---------------------------------------------------------------------------------------------------
'【処 理 名】IE起動
'【処理概要】IEを起動する
'【引    数】[I]ByVal url As String URL
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Public Sub openUrl(ByVal url As String)
    'Internet Explorerを可視にする
    objIE.Visible = True
    objIE.Navigate url
    waitIE
End Sub

'---------------------------------------------------------------------------------------------------
'【処 理 名】起動済みIE取得
'【処理概要】起動済みのIEを取得する。複数起動されている場合は最後に取得したウィンドウとなる
'【引    数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Public Sub getIE()
    Dim objShell As Shell
    Dim objWin As Object
    
    Set objShell = New Shell
    For Each objWin In objShell.Windows
        If objWin.Name = "Internet Explorer" Then
            Set objIE = objWin
        End If
    Next
End Sub

'---------------------------------------------------------------------------------------------------
'【処 理 名】IE待機
'【処理概要】IEのBusyを待機する
'【引    数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Private Sub waitIE()
    Do While objIE.Busy Or objIE.ReadyState < READYSTATE_COMPLETE
        DoEvents
    Loop
End Sub

'---------------------------------------------------------------------------------------------------
'【処 理 名】URLオープン
'【処理概要】指定したURLを開く
'【引    数】[I]ByVal url As String
'【返 却 値】
'---------------------------------------------------------------------------------------------------
Private Sub naviUrl(ByVal url As String)
    objIE.Navigate url
    waitIE
End Sub

'---------------------------------------------------------------------------------------------------
'【処 理 名】最前面に表示
'【処理概要】IEを最前面に表示する
'【引    数】なし
'【返 却 値】なし
'---------------------------------------------------------------------------------------------------
Private Sub foreGroundIE()
    If IsIconic(objIE.hWnd) Then
        ShowWindowAsync objIE.hWnd, eHWnd.SW_RESTORE
    End If
End Sub
参考 MSDNShowWindow 参考 VBAのIE制御入門VBAのIE制御入門

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です