概要
この記事は 日本の祝日データをEXCEL(VBA)で取得してみた の続編です。
Google は XML/ICAL/HTML の形式で日本の祝日データ (当年とその前後一年分) を提供しています。今回は ICAL のデータを取得して, 祝日名と日付情報をコレクションに格納してみます。
コード
GitHub に置いておきますので, 必要な方は自由に使ってください。
- slangGetIcalHoliday.cls
- slangGetIcalHolidayType.cls
クラスファイルのダウンロードはこちら → https://github.com/slangsoft/SlangBox
使い方
- 適当な Excel ファイルに [slangGetIcalHoliday.cls] と [slangGetIcalHolidayType.cls] をインポートする。
- 標準モジュールを新規追加し, その中に下記の様なサブルーチンを用意する。
下記サンプルでは, 取得した祝日データをイミディエイトウィンドウに表示します。ちなみにソートは行っていません。ICAL から取得した順番に表示されます。
Public Sub main()
Dim myGetIcalHoliday As New slangGetIcalHoliday
Dim holidayDataset As Collection
Dim i As Long
myGetIcalHoliday.setTmpFilePath ("c:\") '一時ファイル作成用ディレクトリ設定
Set holidayDataset = myGetIcalHoliday.getIcalHolidayData
For i = 1 To holidayDataset.Count
Debug.Print holidayDataset.Item(i).hDate & " " & _
holidayDataset.Item(i).hName
Next i
End Sub
holidayDataset.Item(i).hDate
に日付データ (yyyy/mm/dd形式), holidayDataset.Item(i).hName
に祝日名が入っています。
あとがき
日本の祝日データをEXCEL(VBA)で取得してみた では XML データから祝日データを取得しましたが, Google が提供している XML データは祝日データが不足していました。
ということで, 急遽 ICAL データから祝日データを取得するクラスを作ってみたのですが・・・コードが美しくないです。力技感が半端ないので, 動けば OK という人向けになってます。(^^;
もっと素敵なやり方をご存知の方は, 是非ご教授ください。