Excel VBAを利用したニュースサイトの見出し自動取得方法

Excel VBAを使用して、ニュースサイトから最新の見出しを自動取得する方法について詳しく解説します。Web上の情報をExcelに取り込む技術は、業務の効率化や情報の収集に非常に役立ちます。この記事では、基本的なVBAコードから応用例まで、具体的な手順とともにご紹介します。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

基本的なVBAコードでニュースサイトから見出しを取得する方法

以下は、特定のニュースサイトから最新の見出しを取得するための基本的なVBAコードです。


Sub GetNewsHeadline()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    ie.Visible = False
    ie.navigate "https://example-news-site.com" 'ニュースサイトのURLを指定
    Do While ie.Busy Or ie.readyState <> 4
        DoEvents
    Loop
    Dim headline As String
    headline = ie.document.getElementById("headline").innerText '見出しの要素IDを指定
    ThisWorkbook.Sheets("Sheet1").Range("A1").Value = headline
    ie.Quit
    Set ie = Nothing
End Sub

このコードは、Internet Explorerのオートメーションを使って、指定したニュースサイトを開き、そのページから見出しのテキストを取得しています。取得した見出しは、現在のワークブックのSheet1のA1セルに表示されます。

コードの詳細解説

1. Internet Explorerのインスタンスを作成します。
2. `ie.navigate`メソッドで指定のURLを開きます。
3. サイトが完全に読み込まれるまで待機します。
4. 見出しのテキストは、`getElementById`メソッドを使って取得します。ここでは、要素のIDを”headline”としていますが、実際のサイトの要素IDに合わせて変更する必要があります。
5. 取得した見出しをExcelのセルに出力します。
6. Internet Explorerを終了します。

応用例

1. 複数の見出しを取得する

特定のニュースサイトには、複数の見出しやサブ見出しが存在する場合があります。その場合、以下のようにVBAコードを変更して、複数の見出しを一度に取得することができます。


Sub GetMultipleHeadlines()
    '... 上部のコードは省略 ...
    
    Dim headlines As Object
    Set headlines = ie.document.getElementsByClassName("headline")
    Dim i As Integer
    For i = 0 To headlines.Length - 1
        ThisWorkbook.Sheets("Sheet1").Cells(i + 1, 1).Value = headlines.Item(i).innerText
    Next i

    '... 下部のコードは省略 ...
End Sub

2. 画像付きの見出しを取得する

見出しのテキストだけでなく、関連する画像も一緒に取得したい場合は、以下の方法を使用できます。


Sub GetHeadlineWithImage()
    '... 上部のコードは省略 ...
    
    Dim headlineText As String
    Dim headlineImage As String
    headlineText = ie.document.getElementById("headline").innerText
    headlineImage = ie.document.getElementById("headlineImage").src
    ThisWorkbook.Sheets("Sheet1").Range("A1").Value = headlineText
    ThisWorkbook.Sheets("Sheet1").Range("B1").Value = headlineImage

    '... 下部のコードは省略 ...
End Sub

3. 特定のカテゴリの見出しを取得する

ニュースサイトでは、ビジネス、スポーツ、エンタメなど、複数のカテゴリが存在する場合があります。特定のカテゴリの見出しのみを取得したい場合は、以下のコードを使用します。


Sub GetCategoryHeadline()
    '... 上部のコードは省略 ...

    Dim categoryHeadline As String
    categoryHeadline = ie.document.querySelector(".business .headline").innerText
    ThisWorkbook.Sheets("Sheet1").Range("A1").Value = categoryHeadline

    '... 下部のコードは省略 ...
End Sub

まとめ

Excel VBAを使用して、ウェブサイトから情報を自動取得する技術は、データ収集やレポート作成などの業務を効率化する上で非常に有効です。基本的なコードから応用例までを理解し、自身の業務に応用することで、より高度な情報分析やレポート作成が可能となります。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次