「ieFindサブルーチン」の詳しい解説については、以下より確認してください。

エラーや誤ってIE(InternetExplorer)を削除した場合など制御できていないIEを見つけて制御する方法について解説しています。本来であれば、エラーがでないようなプログラムにすることが大前提なのですが、対象サイトのHTML構文に間違いや、規則性に沿って処理していたもののイレギュラーなページでエラーが起こることはよくありますので、こちらを利用するととても便利です。

サブルーチンとは

サブルーチンとは、プログラム処理の中で繰り返し利用されるルーチン作業をモジュール化(部品化)してまとめたものになります。また、呼び出す側をメインルーチンと呼ぶのに対して「サブルーチン」と呼ばれます。

メリット

繰り返し利用されるルーチン作業をモジュール化(部品化)することで、同じ処理のプログラムを何度も書く手間が省け、プログラムも全体的に見やすくなります。これによりプログラムソースの可読性や保守性を高く保つことができます。

関連性の高いサブルーチン

Function ieFind(urlName As String) As InternetExplorer
    
    Dim objShell As Object, objWin As Object

  'Shellオブジェクトを作成する
    Set objShell = CreateObject("Shell.Application")
      
    For Each objWin In objShell.Windows

        If objWin.name = "Internet Explorer" And _
           objWin.LocationURL = urlName Then

            'InternetExplorerオブジェクトを代入
            Set ieFind = objWin

            Exit For

        End If

    Next

    Set objShell = Nothing

End Function

※ドラッグ(スワイプ)すると全体を確認できます。


こちらの構文と引数の内容は以下になります。尚、引数はすべて参照渡しで渡されます。

ieFind("制御対象のサイトURLの文字列")
構文ieFind(urlName)
引数名データ型内容値の事例初期値省略
urlNameString制御したい対象のサイトURLの文字列を指定します。"http://www.vba-ie.net/"×

引数urlNameは必須項目で、制御したい対象のサイトURLの文字列を設定します。


    Dim objShell As Object, objWin As Object

※ドラッグ(スワイプ)すると全体を確認できます。

まずは、Dimステートメントを利用してオブジェクト変数objShell,objWinオブジェクト型(Object)を変数宣言しています。

    'Shellオブジェクトを作成する
    Set objShell = CreateObject("Shell.Application")

※ドラッグ(スワイプ)すると全体を確認できます。

次にSetステートメントCreateObject関数を利用してShellオブジェクトを作成します。

    For Each objWin In objShell.Windows

        If objWin.name = "Internet Explorer" And _
           objWin.LocationURL = urlName Then

            'InternetExplorerオブジェクトを代入
            Set ieFind = objWin

            Exit For

        End If

    Next

※ドラッグ(スワイプ)すると全体を確認できます。

こちらでは、For Each~Nextステートメントを利用して現在開いているウィンドウの数だけループ処理を行っています。設定するコレクションは、ShellオブジェクトのWindowsプロパティで取得した現在開いているウィンドウ(Windowsコレクション)になります。

さらにIf~Then~Elseステートメントを利用して「開いているウィンドウの名前がInternet Explorer」かつ「サイトのURLが引数urlNameと一致」したオブジェクトを戻り値ieFindにセットします。これにより、InternetExplorerオブジェクトを制御する環境が整いました。

サイトのURLを取得する場合は、InternetExplorerオブジェクトLocationURLプロパティを利用して取得します。InternetExplorerオブジェクトをセットしたらExit Forステートメントを利用してループを抜けます。

    Set objShell = Nothing

End Function

※ドラッグ(スワイプ)すると全体を確認できます。

ループ処理を抜けたらSetステートメントを利用して、Nothingを指定することでShellオブジェクトを解除します。プロシージャレベルで宣言した変数については、そのプロシージャの実行が終了した時点で自動的に開放されるで基本不要なのですが、こちらでは記載することとしています。

最後はEndステートメントを利用してieFindサブルーチン(ユーザー定義関数)を終了させます。

VBAのIE制御についてのQ&A掲示板

↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。

ExcelのVBA初心者入門

↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。

目次

IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

IEのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作のVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

IE操作のステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。