Excel-VBA IEに表示したWebページテキストを取得するマクロ

2019/12/31

プログラム

t f B! P L
Excel VBAマクロ。今回は
IEに表示したWebページテキストを取得するマクロ
を示す。

IE(Internet Explorer)をひらいて接続待機。
WebページのHTMLテキスト部分を取得して
エクセルシートに入力。
取得した値をWebページに入力したり、
ボタンをクリックするマクロ。

■Excel-VBA IEに表示したWebページテキストを取得するマクロ

  1. Sub sample51()
  2.  
  3. Dim ObjIE As Object
  4. Set ObjIE = CreateObject("InternetExplorer.Application")
  5. ObjIE.Visible = True
  6. ObjIE.navigate "http://〇〇"
  7. Call IEWait(ObjIE)
  8.  
  9. Dim PIC As Long
  10. Dim k As Long
  11. Dim TN As String
  12. Dim PN As String
  13. PIC = 666
  14.  
  15. For k = 1 To PIC
  16. ObjIE.navigate "http://〇〇"
  17. Call IEWait(ObjIE)
  18.  
  19. Dim Obj As Object
  20. Dim j As Integer
  21. Dim i As Integer
  22. j = 0
  23.  
  24. For Each Obj In ObjIE.Document.all
  25. Select Case Obj.tagName
  26. Case "TR", "TD", "TH"
  27. Select Case Obj.tagName
  28. Case "TR"
  29. j = j + 1
  30. i = 0
  31. Case "TD", "TH"
  32. i = i + 1
  33. ActiveSheet.Cells(j, i).Value = Obj.innerText
  34. End Select
  35. End Select
  36. Next
  37. Cells(8, 2).Replace What:=" ", replacement:=""
  38. Cells(4, 2).Replace What:=" ", replacement:=""
  39. ActiveSheet.Calculate
  40. TN = Cells(4, 2)
  41. PN = Cells(8, 2)
  42.  
  43. For Each objTag In ObjIE.Document.getElementsByTagName("input")
  44. If InStr(objTag.outerHTML, "Input_TN") > 0 Then
  45. objTag.Value = TN
  46. Call IEWait(ObjIE)
  47. Exit For
  48. End If
  49. Next
  50.  
  51. For Each objTag In ObjIE.Document.getElementsByTagName("input")
  52. If InStr(objTag.outerHTML, "Input_PN") > 0 Then
  53. objTag.Value = PN
  54. Call IEWait(ObjIE)
  55. Exit For
  56. End If
  57. Next
  58.  
  59. For Each objTag In ObjIE.Document.getElementsByTagName("input")
  60. If InStr(objTag.outerHTML, "Button_F1") > 0 Then
  61. objTag.Click
  62. Call IEWait(ObjIE)
  63. Exit For
  64. End If
  65. Next
  66.  
  67. For Each objTag In ObjIE.Document.getElementsByTagName("input")
  68. If InStr(objTag.outerHTML, "Button_F2") > 0 Then
  69. objTag.Click
  70. Call IEWait(ObjIE)
  71. Exit For
  72. End If
  73. Next
  74.  
  75. Next k
  76.  
  77. End Sub
  78.  
  79. Function IEWait(ByRef ObjIE As Object)
  80. Do While ObjIE.Busy = True Or ObjIE.readyState <> 4
  81. DoEvents
  82. Loop
  83. End Function
※[3.] 変数宣言。
※[4.] IEをオブジェクトにセット。
※[5.] IEを可視化。
※[6.] IEを任意のURLに接続。
※[7.] Webページ読み込み待機マクロ呼び出し。

※[9.~12.] 変数宣言。
※[13.] 入力してボタン押すループ処理回数。

※[15.] 666回ループ処理。
※[16.] IEを任意のURLに接続。
※[17.] Webページ読み込み待機マクロ呼び出し。
※[19.~21.] 変数宣言。
※[22.] jを初期化。

※[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ページ読み込み待機マクロ。

■マクロ実行対象

■ワークブック「Book.xlsx」

■IEで表示されたテキストを取得したいWebページ。
社内システムなど。

■マクロ実行結果

実行すると、Webページのテキストを取得して
エクセルシートに転記。
その値をWebページに入力、
ボタンをクリックして自動処理する。

■あとがき

今回はExcel VBAマクロ。
IEに表示したWebページテキストを取得するマクロ
を示した。

Webページのテキストを取得して自動処理
したい場合に使う。

本マクロではテキスト取得して
半角スペース削除後、
Webページ入力とボタンのクリック、
それを666回ループ処理
まで行っているが、
テキスト取得のみであれば以下のコードとなる。
  1. Sub sample51a()
  2.  
  3. Dim ObjIE As Object
  4. Set ObjIE = CreateObject("InternetExplorer.Application")
  5. ObjIE.Visible = True
  6. ObjIE.navigate "http://〇〇"
  7. Call IEWait(ObjIE)
  8.  
  9. Dim Obj As Object
  10. Dim j As Integer
  11. Dim i As Integer
  12. j = 0
  13.  
  14. For Each Obj In ObjIE.Document.all
  15. Select Case Obj.tagName
  16. Case "TR", "TD", "TH"
  17. Select Case Obj.tagName
  18. Case "TR"
  19. j = j + 1
  20. i = 0
  21. Case "TD", "TH"
  22. i = i + 1
  23. ActiveSheet.Cells(j, i).Value = Obj.innerText
  24. End Select
  25. End Select
  26. Next
  27.  
  28. End Sub
  29.  
  30. Function IEWait(ByRef ObjIE As Object)
  31. Do While ObjIE.Busy = True Or ObjIE.readyState <> 4
  32. DoEvents
  33. Loop
  34. End Function

【関連記事】
Excel-VBA IEのタグネームクリックと値を入力するマクロ

LibreOfficeBasicではエラーが出て使えなかった。
666は悪魔の数字というが、特に意味はない。
以上。

ブログ アーカイブ

ラベル

このブログを検索

スポンサーリンク

自己紹介

機械メーカー総合職正社員10年勤務後退職。 エクセルVBAプログラム歴 5年。 LibreOffice(無料)でVBAマクロ検証。
■Fortniteクエスト攻略動画■
■Twitter■
⇒詳細プロフィールを表示

QooQ