VBAを使用して、Webページにある表をExcelに自動で貼り付け、さらに次のWebページにある表を最初の表の下に追加していく作業は、特にデータ収集や整理を行う際に非常に便利です。この記事では、VBA初心者の方にもわかりやすく、WebページからExcelに表を貼り付け、複数ページにわたってその作業を繰り返す方法をご紹介します。
VBAでWebページの表をExcelに自動でコピーする方法
まず、VBAを使ってWebページにアクセスし、そのページの表をExcelにコピーする方法を見ていきます。Excelでは、Internet Explorer(IE)を使ってWebページを操作し、HTMLテーブルを抽出することができます。
以下のコードは、指定されたURLからWebページを開き、ページ内の表をExcelに貼り付ける基本的なコードです。
Sub CopyWebTable()
Dim ie As Object
Set ie = CreateObject('InternetExplorer.Application')
ie.Visible = False ' Internet Explorerを非表示で開く
ie.Navigate '指定のURL'
Do While ie.Busy Or ie.ReadyState <> 4
DoEvents
Loop
Dim doc As Object
Set doc = ie.document
' Webページから表を取得
Dim table As Object
Set table = doc.getElementsByTagName('table')(0) '最初のテーブルを選択
' ここでExcelに貼り付ける処理を追加
End Sub
複数ページにわたってWebページの表を貼り付ける方法
次に、複数ページにわたって表をExcelに貼り付ける方法について説明します。上記の基本的なコードを応用し、Webページをページごとに自動で切り替え、表をExcelに追加する処理を行います。
例えば、各ページにある表を順番にExcelに貼り付けるには、以下のようなコードを追加します。
Sub CopyMultiplePages()
Dim ie As Object
Dim i As Integer
Set ie = CreateObject('InternetExplorer.Application')
ie.Visible = False
' 各ページのURLリストを作成
Dim urls As Variant
urls = Array('URL1', 'URL2', 'URL3')
For i = LBound(urls) To UBound(urls)
ie.Navigate urls(i)
Do While ie.Busy Or ie.ReadyState <> 4
DoEvents
Loop
' 表を取得してExcelに貼り付け
' Excelに貼り付ける処理
Next i
End Sub
特定の条件に基づいて表を貼り付けないようにする方法
もし、特定の条件を満たすWebページの表を除外したい場合は、VBAで条件を指定して処理を行います。例えば、特定のテキストが含まれている表を除外するには、以下のようなコードを使用します。
If InStr(doc.body.innerText, '除外したいテキスト') = 0 Then
' 表を貼り付ける処理
End If
このように、条件を追加することで、必要ないページの表をスキップすることができます。
まとめ:VBAでのWebページ表の自動貼り付けの手順
VBAを使ってWebページからExcelに表を自動で貼り付ける作業は、繰り返し行うデータ収集作業を効率化するのに非常に役立ちます。今回紹介したコードを基に、必要なページのURLを指定し、表をExcelに追加することで、複数ページのデータを簡単に整理することができます。
また、特定の条件に基づいて表を除外する方法も説明しましたので、条件に応じた柔軟なデータ取得が可能です。VBAを活用して、さらに効率的なデータ処理を実現しましょう。


コメント