IEに表示したWebページテキストを取得するマクロ
を示す。
IE(Internet Explorer)をひらいて接続待機。
WebページのHTMLテキスト部分を取得して
エクセルシートに入力。
取得した値をWebページに入力したり、
ボタンをクリックするマクロ。
■Excel-VBA IEに表示したWebページテキストを取得するマクロ
Sub sample51() Dim ObjIE As Object Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Visible = True ObjIE.navigate "http://〇〇" Call IEWait(ObjIE) Dim PIC As Long Dim k As Long Dim TN As String Dim PN As String PIC = 666 For k = 1 To PIC ObjIE.navigate "http://〇〇" Call IEWait(ObjIE) Dim Obj As Object Dim j As Integer Dim i As Integer j = 0 For Each Obj In ObjIE.Document.all Select Case Obj.tagName Case "TR", "TD", "TH" Select Case Obj.tagName Case "TR" j = j + 1 i = 0 Case "TD", "TH" i = i + 1 ActiveSheet.Cells(j, i).Value = Obj.innerText End Select End Select Next Cells(8, 2).Replace What:=" ", replacement:="" Cells(4, 2).Replace What:=" ", replacement:="" ActiveSheet.Calculate TN = Cells(4, 2) PN = Cells(8, 2) For Each objTag In ObjIE.Document.getElementsByTagName("input") If InStr(objTag.outerHTML, "Input_TN") > 0 Then objTag.Value = TN Call IEWait(ObjIE) Exit For End If Next For Each objTag In ObjIE.Document.getElementsByTagName("input") If InStr(objTag.outerHTML, "Input_PN") > 0 Then objTag.Value = PN Call IEWait(ObjIE) Exit For End If Next For Each objTag In ObjIE.Document.getElementsByTagName("input") If InStr(objTag.outerHTML, "Button_F1") > 0 Then objTag.Click Call IEWait(ObjIE) Exit For End If Next For Each objTag In ObjIE.Document.getElementsByTagName("input") If InStr(objTag.outerHTML, "Button_F2") > 0 Then objTag.Click Call IEWait(ObjIE) Exit For End If Next Next k End Sub Function IEWait(ByRef ObjIE As Object) Do While ObjIE.Busy = True Or ObjIE.readyState <> 4 DoEvents Loop End Function※[3.] 変数宣言。
※[4.] IEをオブジェクトにセット。
※[5.] IEを可視化。
※[6.] IEを任意のURLに接続。
※[7.] Webページ読み込み待機マクロ呼び出し。
※[9.~12.] 変数宣言。
※[13.] 入力してボタン押すループ処理回数。
※[16.] IEを任意のURLに接続。
※[17.] Webページ読み込み待機マクロ呼び出し。
※[19.~21.] 変数宣言。
※[43.~49.] HTMLのinputタグ名「Input_TN」に
※[15.] 666回ループ処理。
※[17.] Webページ読み込み待機マクロ呼び出し。
※[19.~21.] 変数宣言。
※[22.] jを初期化。
※[24.~36.] TR,TD,THタグの要素取得して
エクセルシートにテキスト値を入力。
※[24.~36.] TR,TD,THタグの要素取得して
エクセルシートにテキスト値を入力。
※[37.~38.] 半角スペース削除。
※[39.] アクティブシートの関数を計算する。
※[40.~41.] テキスト値を変数にセット。
※[43.~49.] HTMLのinputタグ名「Input_TN」に
j行1列目のセルの値を入力する。
※[51.~57.] HTMLのinputタグ名「Input_PN」に
j行2列目のセルの値を入力する。
※[59.~65.] HTMLのinputタグ名「Button_F1」を
クリックする。
※[67.~73.] HTMLのinputタグ名「Button_F2」を
クリックする。
※[75.] 次の行に処理をうつる。
※[79.~83.] Webページ読み込み待機マクロ。※[51.~57.] HTMLのinputタグ名「Input_PN」に
j行2列目のセルの値を入力する。
※[59.~65.] HTMLのinputタグ名「Button_F1」を
クリックする。
※[67.~73.] HTMLのinputタグ名「Button_F2」を
クリックする。
※[75.] 次の行に処理をうつる。
■マクロ実行対象
■ワークブック「Book.xlsx」■IEで表示されたテキストを取得したいWebページ。
社内システムなど。
■マクロ実行結果
実行すると、Webページのテキストを取得してエクセルシートに転記。
その値をWebページに入力、
ボタンをクリックして自動処理する。
■あとがき
今回はExcel VBAマクロ。IEに表示したWebページテキストを取得するマクロ
を示した。
Webページのテキストを取得して自動処理
したい場合に使う。
本マクロではテキスト取得して
半角スペース削除後、
Webページ入力とボタンのクリック、
それを666回ループ処理
まで行っているが、
テキスト取得のみであれば以下のコードとなる。
Sub sample51a() Dim ObjIE As Object Set ObjIE = CreateObject("InternetExplorer.Application") ObjIE.Visible = True ObjIE.navigate "http://〇〇" Call IEWait(ObjIE) Dim Obj As Object Dim j As Integer Dim i As Integer j = 0 For Each Obj In ObjIE.Document.all Select Case Obj.tagName Case "TR", "TD", "TH" Select Case Obj.tagName Case "TR" j = j + 1 i = 0 Case "TD", "TH" i = i + 1 ActiveSheet.Cells(j, i).Value = Obj.innerText End Select End Select Next End Sub Function IEWait(ByRef ObjIE As Object) Do While ObjIE.Busy = True Or ObjIE.readyState <> 4 DoEvents Loop End Function
【関連記事】
■Excel-VBA IEのタグネームクリックと値を入力するマクロ
LibreOfficeBasicではエラーが出て使えなかった。
666は悪魔の数字というが、特に意味はない。
以上。