IT女子がお届けするオフィスワーク効率化・VBA技術紹介

ノンプログラマーによるノンプログラマーのためのやさしい解説付き

スポンサーリンク

【VBAでIE操作】起動済み画面のHTMLを取得する(Webスクレイピング)

f:id:excel-accounting:20180711202329p:plain:w400


[VBA IE操作]というキーワードで検索して出てくる手順は、こんな流れのが多いですよね。

①IEを起動
②目的のURLにアクセス
③IDとパスワードを入力
④ログインボタンを押す
⑤HTMLを読み込む
⑥スクレイピング開始

ここで困るのが、

「目的の画面までのアクセス経路が複雑でたどりつけない・・・」

f:id:excel-accounting:20180424112139p:plain:w150


ならば発想を変えて、

先に目的の画面(Webサイト)に手動でアクセスしておき、その画面のHTMLを取得しちゃいましょう!

こちらの三流君を参考にさせていただきました。
三流君VBA:TypeNameとShell.Applicationを使い起動済みのIEを探す

この記事で紹介すること

起動済みの画面(Webサイト)のHTMLを取得」する方法を紹介しています。
(具体的なスクレイピング手順には触れていません)

このWebサイトを使用して解説していきます。
コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研

※この記事はVBAでIE操作をしたことがある人向けに書いているので、VBA全般の解説は省略しています。

コード

参照設定で下記の2つを使用します。

  • Microsoft HTML Object Library
  • Microsoft Internet Controls
Sub 起動済みの画面のHTMLを取得する()

    Dim shl As Object 'シェルオブジェクト生成
    Set shl = CreateObject("Shell.Application")
    
    Dim targetTitle As String '取得したいウィンドウのタイトルを設定
    targetTitle = "コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研"
    
    Dim win As Object, getFlag As Boolean
    For Each win In shl.Windows '起動中のウィンドウを順番にみていく
        
        'IEとエクスプローラがシェルで取得されるため、IEのみ処理
        If TypeName(win.document) = "HTMLDocument" Then
            If win.document.Title = targetTitle Then
    
                Dim objIE As New InternetExplorer
                Set objIE = win
                
                getFlag = True '正しく取得できた
                Exit For
            End If
        End If
        
    Next
    
    If getFlag = False Then
        MsgBox "目的の画面が開かれていません。", vbExclamation
        Exit Sub
    End If
    
    '目的の画面のHTMLを読み込む
    Dim htmlDoc As HTMLDocument
    Set htmlDoc = objIE.document

End Sub

マクロの使い方

①titleの設定
上記コードの変数targetTitleに対象画面のtitleを設定します。

下記のいずれかの方法で、対象画面のHTMLを確認。

  • Ctrl+U
  • マウス右クリック→ソースの表示
  • F12キー

このタグで囲われている文言を設定します。
<title>~</title>

<title>コミュニティ「ノンプログラマーのためのスキルアップ研究会」についてのお知らせ #ノンプロ研</title>


②対象画面をIEで起動

Internet explorerで対象画面にアクセスします。
(ログインが必要なシステムの場合はログイン処理もしておきます)

f:id:excel-accounting:20180711201952p:plain


③マクロを実行

これで対象画面のHTMLが読み込めたので、あとはVBAで自由に操作してください。


こちらの記事では「IEを起動」する手順から紹介しています。
あわせてご覧くださいね!

スポンサーリンク