Excel VBAを使用した競合他社の新製品情報収集の自動化

この記事では、Excel VBAを使用して競合他社のウェブサイトから新製品情報を収集する方法について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、応用例を含めています。

目次

Excel VBAの基本

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

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

VBAを使用した情報収集の概要

ExcelのVBAを使用して、ウェブサイトの情報を収集する方法は非常に便利です。特定の情報を定期的に確認する必要がある場合や、多数のウェブサイトから情報を一元的に収集したい場合に役立ちます。

基本的なコードの構造

以下は、Excel VBAを使用してウェブサイトから情報を収集する基本的なコードの構造です。


Sub GetProductInfo()
    Dim ie As Object
    Set ie = CreateObject("InternetExplorer.Application")
    
    With ie
        .Visible = False
        .navigate "https://example-competitor.com/new-products"
        
        Do Until .ReadyState = 4
            DoEvents
        Loop
        
        Dim productInfo As Object
        Set productInfo = .document.getElementById("product-list")
        
        ThisWorkbook.Sheets(1).Range("A1").Value = productInfo.innerText
        
        .Quit
    End With
End Sub

コードの詳細解説

1. Internet Explorerのオブジェクトを作成して、ウェブサイトを非表示の状態で開きます。
2. `navigate`メソッドを使用して、新製品の情報が掲載されているページにアクセスします。
3. ページの読み込みが完了するまで待機します。
4. `getElementById`メソッドを使用して、新製品の情報が掲載されているエリアを特定します。
5. 取得した情報をExcelのA1セルに書き込みます。

応用例

1. 複数のページから情報を収集する

一つのウェブサイトには複数のページがあり、それぞれに異なる新製品情報が掲載されている場合があります。この場合、各ページにアクセスして情報を収集する必要があります。


Sub GetMultiplePageInfo()
    ' ... (前述のコードと同様の部分は省略)

    Dim pages(1 To 3) As String
    pages(1) = "https://example-competitor.com/new-products/page1"
    pages(2) = "https://example-competitor.com/new-products/page2"
    pages(3) = "https://example-competitor.com/new-products/page3"

    Dim i As Integer
    For i = 1 To 3
        .navigate pages(i)
        ' ...(情報収集のコード)
    Next i
End Sub

2. 画像も収集する

新製品の画像も一緒に収集したい場合、以下のようなコードを使用します。


Sub GetProductImage()
    ' ... (前述のコードと同様の部分は省略)

    Dim imgSrc As String
    imgSrc = .document.getElementById("product-image").src
    ThisWorkbook.Sheets(1).Range("B1").Value = imgSrc
End Sub

3. 特定のキーワードが含まれる製品のみ収集する

新製品の中で特定のキーワードが含まれる製品のみを収集したい場合、以下のようなコードを使用します。


Sub GetKeywordProducts()
    ' ... (前述のコードと同様の部分は省略)

    Dim productInfo As Object
    Set productInfo = .document.getElementById("product-list").getElementsByTagName("li")
    
    Dim item As Object
    For Each item In productInfo
        If InStr(item.innerText, "キーワード") > 0 Then
            ThisWorkbook.Sheets(1).Cells(LastRow() + 1, 1).Value = item.innerText
        End If
    Next item
End Sub

Function LastRow() As Long
    LastRow = ThisWorkbook.Sheets(1).Cells(ThisWorkbook.Sheets(1).Rows.Count, 1).End(xlUp).Row
End Function

まとめ

Excel VBAを使用することで、競合他社のウェブサイトから新製品情報を効率的に収集することが可能です。基本のコードをマスターした後、様々な応用例を試して、自分のニーズに合わせてカスタマイズしてみてください。

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

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

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

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

コメント

コメントする

目次