3分でわかるExcel VBAでIEを利用したHTMLのチェック方法

3分でわかるExcel VBAでIEを利用したHTMLのチェック方法

Excel VBAとは

Excelで使用できるプログラミング言語。

簡単なExcel VBAの使い方

1. Excelを起動する

2. Alt + F11 でVBAのエディタを起動する

3. 試しに下記のコードを入れて実行するとA1のセルに3が入力される

Sub test()
  Range("A1").Value = 1 + 2
End Sub

※表示→マクロ→マクロの表示から実行する。

セルから値を受け取れる

セルに値を入れるコードを書いたが逆にセルの値をコード側で使用することもできる。

例えば下記にように記述して実行すればA1から受け取った値の10倍をMsgBoxで表示する。

Sub test()
  MsgBox Range("A1").Value * 10
End Sub

IEを起動する

Sub test()
  Dim objIE As Object
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
End Sub

iwb.jpを開く

Sub test()
  Dim objIE As Object
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  objIE.Navigate "https://iwb.jp/"
End Sub

URLをA2から受け取る

Sub test()
  Dim objIE As Object
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  objIE.Navigate Range("A2").Value
End Sub

HTMLを取得してB2の文字列が入っているか調べる

Sub test()
  Sub test()
  Dim objIE As Object
  Dim html As String
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  objIE.Navigate Range("A2").Value
  Do While objIE.Busy Or objIE.readystate <> 4
    DoEvents
  Loop
  html = objIE.document.all(0).outerHTML
  If InStr(html, Range("B2").Value) Then
    Range("C2").Value = "あり"
  Else
    Range("C2").Value = "なし"
  End If
End Sub

処理が完了したらIEを閉じる

Sub test()
  Dim objIE As Object
  Dim html As String
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  objIE.Navigate Range("A2").Value
  Do While objIE.Busy Or objIE.readystate <> 4
    DoEvents
  Loop
  html = objIE.document.all(0).outerHTML
  If InStr(html, Range("B2").Value) Then
    Range("C2").Value = "あり"
  Else
    Range("C2").Value = "なし"
  End If
  objIE.Visible = False
End Sub

titleタグの内容を取得してD2に入れる

Sub test()
  Dim objIE As Object
  Dim html As String
  Set objIE = CreateObject("InternetExplorer.application")
  objIE.Visible = True
  objIE.Navigate Range("A2").Value
  Do While objIE.Busy Or objIE.readystate <> 4
    DoEvents
  Loop
  html = objIE.document.all(0).outerHTML
  If InStr(html, Range("B2").Value) Then
    Range("C2").Value = "あり"
  Else
    Range("C2").Value = "なし"
  End If
  Range("D2").Value = objIE.document.Title
  objIE.Visible = False
End Sub

Excel VBAでHTMLをチェックするサンプルファイル