Excel VBAでチケット予約サイトから席・日程情報を自動取得する方法

この記事では、Excel VBAを使用して、チケット予約サイトから利用可能な席や日程の情報を自動で取得する方法について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、さらに応用例を3つ含めています。

目次

Excel VBAの基本

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

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

VBAを利用したWebスクレイピングの基本

Webスクレイピングとは、Webページから情報を抽出する技術のことを指します。Excel VBAを使用することで、この技術を効率的に活用することができます。

基本コードの作成

まずは、基本的なコードを紹介します。


Sub GetTicketInfo()
    Dim IE As Object
    Dim htmlElem As Object
    
    ' Internet Explorerを操作するためのオブジェクトを作成
    Set IE = CreateObject("InternetExplorer.Application")
    
    ' Internet Explorerを表示
    IE.Visible = True
    
    ' チケット予約サイトにアクセス
    IE.navigate "http://example-ticket-reservation.com"
    
    ' ページの読み込みを待つ
    Do While IE.Busy Or IE.readyState <> 4
        DoEvents
    Loop
    
    ' 席情報と日程情報を取得
    Set htmlElem = IE.document.getElementsByClassName("ticket-info")
    
    ' Excelに情報を出力
    For i = 0 To htmlElem.Length - 1
        Cells(i + 1, 1).Value = htmlElem.item(i).innerText
    Next i
    
    ' Internet Explorerを閉じる
    IE.Quit
    Set IE = Nothing
End Sub

コードの解説

このコードは、Internet Explorerを使ってチケット予約サイトにアクセスし、席情報と日程情報を取得してExcelに出力するものです。

1. `CreateObject(“InternetExplorer.Application”)`でInternet Explorerを操作するオブジェクトを作成します。
2. `IE.navigate`で指定したURLにアクセスします。
3. `Do While`ループでページの読み込みが完了するまで待ちます。
4. `getElementsByClassName`で指定したクラス名を持つ要素のリストを取得します。
5. Forループを使用して、取得した要素のテキストをExcelに出力します。

補足事項

– Webスクレイピングを行う際には、対象となるサイトの利用規約を確認することが重要です。一部のサイトではスクレイピングを禁止している場合があります。
– 取得する情報の位置やクラス名は、サイトのデザインや構造によって変わる可能性があります。そのため、定期的にコードの動作を確認し、必要に応じて修正が必要です。

応用例

1. 複数のサイトから情報取得

予約サイトが複数ある場合、それぞれのサイトから情報を取得することができます。


Sub GetMultipleSitesInfo()
    ' 省略...
    Dim urls() As Variant
    urls = Array("http://example-ticket-reservation1.com", "http://example-ticket-reservation2.com")
    
    For Each url In urls
        IE.navigate url
        ' 以降は基本コードと同様
        ' 省略...
    Next url
End Sub

2. 特定の条件に合致する情報のみを取得

例えば、土日の日程のみを取得するといった条件を設定して情報を取得することも可能です。


Sub GetWeekendInfo()
    ' 省略...
    For i = 0 To htmlElem.Length - 1
        If InStr(htmlElem.item(i).innerText, "土") > 0 Or InStr(htmlElem.item(i).innerText, "日") > 0 Then
            Cells(i + 1, 1).Value = htmlElem.item(i).innerText
        End If
    Next i
End Sub

3. 予約サイトにログインして情報を取得

予約サイトにログインが必要な場合、VBAで自動ログインして情報を取得することも可能です。


Sub LoginAndGetInfo()
    ' 省略...
    ' ユーザー名とパスワードを入力
    IE.document.getElementById("username").Value = "YourUsername"
    IE.document.getElementById("password").Value = "YourPassword"
    
    ' ログインボタンをクリック
    IE.document.getElementById("login-button").Click
    
    ' 以降は基本コードと同様
    ' 省略...
End Sub

まとめ

Excel VBAを活用して、チケット予約サイトからの情報取得を自動化することで、手間や時間を大幅に削減することができます。特定の条件を満た

す情報の取得や複数サイトからの情報取得など、さまざまな応用が考えられますので、上記のコードを参考に自分のニーズに合わせてカスタマイズしてみてください。

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

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

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

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

コメント

コメントする

目次