Excel VBAを使った美術館・ギャラリーサイトの展示情報自動取得法

Excel VBAを活用することで、美術館やギャラリーサイトからの展示情報を自動的に取得するプログラムを作成することができます。この記事では、そのようなプログラムの基本的な作成方法と応用例を紹介します。

目次

Excel VBAの基本

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

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

Excel VBAを活用した展示情報の取得とその利点

Excel VBAを使用することで、手動でのデータ収集作業を自動化し、時間の節約や作業ミスの削減、大量の情報を効率よくまとめることが可能となります。

基本的なコードの構成

以下のコードは、美術館やギャラリーサイトから展示情報を取得するシンプルな例です。


Sub GetExhibitionInfo()
    Dim IE As Object
    Dim doc As Object
    Dim element As Object
    ' Internet Explorerを開く
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    ' 目的のウェブサイトにアクセス
    IE.navigate "https://example-museum-website.com/exhibitions"
    ' サイトの読み込みが完了するまで待つ
    Do While IE.Busy Or IE.readyState <> 4
        DoEvents
    Loop
    Set doc = IE.document
    ' 展示情報の取得
    Set element = doc.getElementById("exhibition-info")
    Cells(1, 1).Value = element.innerText
    ' Internet Explorerを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

このコードは、Internet Explorerを用いて指定したウェブサイトにアクセスし、展示情報をExcelのシートに転写するものです。

応用例

応用例1: 複数のサイトから情報取得

複数のサイトから情報を一括で取得する場合のコードです。


Sub GetMultipleSitesInfo()
    Dim IE As Object
    Dim doc As Object
    Dim element As Object
    Dim i As Integer
    Dim urls() As String
    urls = Array("https://site1.com/exhibitions", "https://site2.com/exhibitions")
    ' Internet Explorerを開く
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    For i = LBound(urls) To UBound(urls)
        ' 各サイトにアクセス
        IE.navigate urls(i)
        ' サイトの読み込みが完了するまで待つ
        Do While IE.Busy Or IE.readyState <> 4
            DoEvents
        Loop
        Set doc = IE.document
        ' 展示情報の取得
        Set element = doc.getElementById("exhibition-info")
        Cells(i + 1, 1).Value = element.innerText
    Next i
    ' Internet Explorerを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

応用例2: 展示の画像もダウンロード

展示情報に加えて、画像もダウンロードするコードの例です。


Sub GetExhibitionInfoWithImage()
    Dim IE As Object
    Dim doc As Object
    Dim imgElement As Object
    Dim imgUrl As String
    ' Internet Explorerを開く
    Set IE = CreateObject("InternetExplorer.Application")
    IE.Visible = True
    ' 目的のウェブサイトにアクセス
    IE.navigate "https://example-museum-website.com/exhibitions"
    ' サイトの読み込みが完了するまで待つ
    Do While IE.Busy Or IE.readyState <> 4
        DoEvents
    Loop
    Set doc = IE.document
    ' 展示情報の取得
    Set imgElement = doc.getElementById("exhibition-image")
    imgUrl = imgElement.src
    ' 画像のダウンロード
    ThisWorkbook.FollowHyperlink imgUrl
    ' Internet Explorerを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

応用例3: 取得した情報の自動整形

取得した展示情報をExcel内で自動的に整形するコードの例です。


Sub FormatExhibitionInfo()
    Dim LastRow As Long

    ' 展示情報の最後の行を取得
    LastRow = ThisWorkbook.Sheets("Sheet1").Cells(ThisWorkbook.Sheets("Sheet1").Rows.Count, "A").End(xlUp).Row

    ' データの整形
    With ThisWorkbook.Sheets("Sheet1").Range("A1:A" & LastRow)
        .Font.Name = "Arial"
        .Font.Size = 12
        .Columns("A:A").AutoFit
    End With
End Sub

まとめ

Excel VBAを使って美術館やギャラリーサイトからの展示情報を自動取得することで、大量の情報も効率的にまとめることができます。基本的なコードから応用例まで、さまざまなシチュエーションでの使用法を学んで、自分のニーズに合わせてカスタマイズしてみましょう。

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

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

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

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

コメント

コメントする

目次