CoCoのYDブログ

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

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

こんにちは

今回は先日のIE取得のプログラムにOn Errorを足すことで判定対象となるプロパティをオブジェクトが保有しているかどうかに関わらず利用できます。

 

どういうことかというと

[オブジェクト名].Visible = Trueで表示したばかりのIEにはタイトルがない状態です。そこで前回使用したプログラムを実行するとエラーが発生してしまいます。今回はそれを防いだプログラムとなります。

 

サンプルプログラム

Sub test()

    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
        strTemp = ""

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

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

End Sub

 1~8行目:前回と同様

9行目:変数strTemp の初期化(空白に戻すだけ)

10行目:なし

11行目:On Error Resume Next

説明してないところですが、エラーが発生しても無視して次に行きなさいという命令です。

12行目:前回同様strTemp にタイトルを代入しています

13行目:11行目で発生したエラー無視の終わりを示しています。

13行目以降えらーが発生した場合はエラーとして表示されます。

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

15行目~前回同様

 

こんな感じですね。

まあタイトルがない場合なんて発生しにくいとは思いますが、こっちのほうが安定して動作すると思います。