Excel VBAを使ってテクノロジーニュースサイトから最新のガジェット情報を取得する方法

この記事では、Excel VBAを使用してテクノロジーニュースサイトから最新のガジェット情報を取得する方法について詳しく解説します。初心者から中級者まで、具体的なコード例とその詳細、応用例を通じてVBAの魅力と強力さをご紹介します。

目次

Excel VBAの基本

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

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

Excel VBAによるWebスクレイピングとは?

Webスクレイピングとは、Webページの内容を自動で取得・解析する技術のことを指します。Excel VBAを使用することで、特定の情報を取得し、Excelのシートにデータとして保存することができます。

Webスクレイピングの基本

Excel VBAでのWebスクレイピングは、主に`InternetExplorer`オブジェクトを使用して行います。このオブジェクトを使用することで、VBAからWebページを操作したり、情報を取得したりすることが可能になります。

必要な参照設定

VBAでWebスクレイピングを行う前に、Microsoft HTML Object LibraryとMicrosoft Internet Controlsの参照設定を追加する必要があります。これにより、HTMLの要素を操作するためのオブジェクトやメソッドを使用することができるようになります。

基本的なコード例

以下は、テクノロジーニュースサイトから最新のガジェット情報を取得する基本的なVBAコードの例です。


Sub GetGadgetInfo()
    Dim IE As Object
    Dim HTMLDoc As Object
    Dim GadgetElement As Object
    ' Internet Explorerを起動
    Set IE = CreateObject("InternetExplorer.Application")
    With IE
        .Visible = False
        .navigate "https://example-technews.com/latest-gadgets"
        ' ページが完全に読み込まれるまで待機
        Do While .Busy Or .readyState <> 4
            DoEvents
        Loop
        Set HTMLDoc = .document
    End With
    ' 最新のガジェット情報を取得
    Set GadgetElement = HTMLDoc.getElementsByClassName("gadget-info")[0]
    ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = GadgetElement.innerText
    ' IEを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

コードの解説

1. `InternetExplorer.Application`を使用してInternet Explorerを起動します。
2. テクノロジーニュースサイトのURLに移動します。
3. ページの読み込みが完了するまで待機します。
4. `getElementsByClassName`メソッドを使用して、ガジェット情報のHTML要素を取得します。
5. 取得した情報をExcelのシートに出力します。

応用例

1. 複数のガジェット情報を取得

単一の情報だけでなく、複数のガジェット情報を一度に取得することも可能です。


Sub GetMultipleGadgetInfo()
    ' ...(前部分は上記と同じ)...

    Dim GadgetElements As Object
    Dim i As Integer

    ' ガジェット情報を複数取得
    Set GadgetElements = HTMLDoc.getElementsByClassName("gadget-info")
    For i = 0 To GadgetElements.Length - 1
        ThisWorkbook.Worksheets("Sheet1").Cells(i + 1, 1).Value = GadgetElements(i).innerText
    Next i

    ' IEを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

2. 画像も一緒に取得

ガジェットの情報だけでなく、関連する画像も一緒に取得する方法です。


Sub GetGadgetInfoWithImage()
    ' ...(前部分は上記と同じ)...

    Dim GadgetImage As Object
    Dim PicRange As Range

    ' 画像URLを取得
    Set GadgetImage = HTMLDoc.getElementsByClassName("gadget-image")[0]
    ImageURL = GadgetImage.src

    ' Excelに画像を挿入
    Set PicRange = ThisWorkbook.Worksheets("Sheet1").Range("B1")
    ThisWorkbook.Worksheets("Sheet1").Pictures.Insert(ImageURL).Select
    Selection.ShapeRange.LockAspectRatio = msoFalse
    Selection.ShapeRange.Height = PicRange.Height
    Selection.ShapeRange.Width = PicRange.Width
    Selection.ShapeRange.Top = PicRange.Top
    Selection.ShapeRange.Left = PicRange.Left

    ' IEを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

3. 特定のキーワードに基づく情報のみを取得

キーワードに一致するガジェット情報のみを取得する方法です。


Sub GetGadgetInfoByKeyword(Keyword As String)
    ' ...(前部分は上記と同じ)...

    Dim GadgetElements As Object
    Dim i As Integer, rowNum As Integer

    ' ガジェット情報を複数取得
    Set GadgetElements = HTMLDoc.getElementsByClassName("gadget-info")
    rowNum = 

1
    For i = 0 To GadgetElements.Length - 1
        If InStr(1, GadgetElements(i).innerText, Keyword, vbTextCompare) > 0 Then
            ThisWorkbook.Worksheets("Sheet1").Cells(rowNum, 1).Value = GadgetElements(i).innerText
            rowNum = rowNum + 1
        End If
    Next i

    ' IEを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

まとめ

Excel VBAを使用することで、テクノロジーニュースサイトから最新のガジェット情報を簡単に取得することが可能です。上記のコードや応用例を参考に、自身のニーズに合わせてカスタマイズしてみてください。

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

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

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

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

コメント

コメントする

目次