【VBA関係】祝日情報を取得する方法【政府公式のCSVがよい】

VBAで日付を扱うアプリを作っていると、「祝日」の情報が欲しくなる場面がある。たとえば、稼働日数を自動で計算したいときや、カレンダーを作成したいときなどだ。土日だけでなく祝日も把握しておく必要がある。
VBAで祝日情報を取得する方法はいくつかある。代表的なものを整理する。
祝日を取得する方法
1. 政府公式「CSV形式の祝日データ」を利用する
内閣府では、祝日一覧をCSV形式で公開している。以下のページから最新版をダウンロードできる。
出典:内閣府「国民の祝日について」
URL:https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
このCSVをExcelに取り込んで、VBAから参照するのが最も手軽な方法だと思う。年に1回程度の更新で済むし、公的な情報なので信頼性も高い。
2. 無料の祝日APIを使う
ネット上には、無料で使える祝日APIも存在する。VBAからAPIにアクセスして祝日情報を取得することも可能だが、やや上級者向け。インターネット接続やJSONの扱いに慣れていないと、実装が難しく感じられるかもしれない。
3. 自力で祝日計算ロジックを組む
祝日を計算するロジックを自作する方法もある。「ハッピーマンデー」などの移動祝日や、春分・秋分の日の計算など、複雑な条件をプログラムに組み込む必要があるため、やや手間がかかる。検証や保守も含めて考えると、あまり現実的ではない。
4. カレンダーアプリからデータをエクスポート
Googleカレンダーなどのカレンダーアプリに登録された祝日データを、iCal形式でエクスポートし、CSVに変換して利用する方法もある。やや手順が多いのが難点。
結論:政府公式のCSVが良い
以上の方法を比較してみると、やはり実用性と手軽さの面では「内閣府の祝日CSVデータをあらかじめダウンロードしておく」方法が一番良い。最新データを毎年一度だけ更新すればよく、安定性も高い。CSVの情報をExcelシートに貼っておくか、「Config」フォルダなどを作成して、そこにCSVを保存し、VBAから読み込む形にするのが良い。
この記事を書いた人
- ■人生を追求する凡人■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢■光学・機械系エンジニア(歴20年、内マネジメント10年、特許数件権利化)/副業フリーランスエンジニア■読書・文学愛好■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成を研究。■VBAアプリ開発サービス提供中(業務委託 / VBA使用経験20年)■Python愛好(歴5年)■VBAエキスパート「Excel VBA スタンダード」(上級者向け資格)/ Python 3 エンジニア認定基礎(経済産業省「ITスキル標準(ITSS)」に掲載)