CoCoのYDブログ

心に思い浮かんだことを少し掘り下げ発信します

【VBA】Webページのタイトルを指定してIEを取得する

こんにちは

IEについて理解を深めるため、今回はShellについて勉強していきましょう。

 

Shellとは

 人間の命令をプログラムに伝える機能です。

なんのこっちゃ。

Windowsの代表的なShellプログラムとしてはエクスプローラーが該当するようです。

エクスプローラーのアドレスバーに「C:\」と入力しEnterを押すとCドライブの中身を表示します。同様に「notepad」と入力しEnterを押すとメモ帳を開きます。

このようにエクスプローラーが解釈してOSに命令を与えています。

 

サンプルプログラム

Sub SearchIE()

    Dim colSh As Object
    Dim win As Object
    Dim strTemp As String
    Dim objIE As Object
    Set colSh = CreateObject("Shell.Application")
    For Each win In colSh.Windows

        If TypeName(win.document) = "HTMLDocument" Then

            If InStr(win.document.Title, "Amazon") > 0 Then
                Set objIE = win
                Exit For
            End If
        End If
    Next

    If objIE Is Nothing Then
        MsgBox "探しているIEはありません"
    Else
        MsgBox objIE.document.Title & "がありました"
    End If

End Sub

1行目:プロシージャの開始

2行目:起動中のすべてのShellWindowを格納する変数

3行目:ShellWindowsを格納する変数

4行目:取得したタイトルを保存するための変数

5行目:目的のIEを取得するための変数

6行目:開いているすべてのShellWindowを変数colShに格納

7行目:For EachでShellWindowをひとつずつ見ていく

8行目:なし

9行目:取り出したWindowがHTMLドキュメントかどうかの判定

10行目:なし

11行目:タイトルバーにAmazonが含まれているかの判定

12行目:条件にあったオブジェクトを格納

13行目:ループから抜け出す

14~17行目:省略

18行目:該当するWebページが見つからない場合

19行目:"探しているIEはありません"と表示

20行目:Else処理

21行目:条件にあったオブジェクトのタイトルを表示

22行目:If関数の終了

23行目:なし

24行目:プロシージャの終了

 

実際にIEAmazonを開いてから実行してみましょう。

f:id:takataka2743:20180907232309p:plain

ちゃんと表示されましたね

 

これは色々と応用できそうです。