この記事では、Excel VBAを使用して、チケット予約サイトから利用可能な席や日程の情報を自動で取得する方法について詳しく説明します。初心者でも理解しやすいように具体的なコード例とその解説、さらに応用例を3つ含めています。
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を活用して、チケット予約サイトからの情報取得を自動化することで、手間や時間を大幅に削減することができます。特定の条件を満た
す情報の取得や複数サイトからの情報取得など、さまざまな応用が考えられますので、上記のコードを参考に自分のニーズに合わせてカスタマイズしてみてください。
コメント