Excelでよく見かけるのが祝日専用のシートに祝日一覧を記載してそれをカレンダー系のシートでvlookupなどで判定して祝日なら色付けするというような方法ですが、この祝日専用シートの祝日はネットで検索した情報などをコピペなどで手動設定しているケースが多いです。
今回はボタン2つで最新の祝日情報をExcelに表示するVBAのサンプルコードをご紹介します。
最新の祝日用のCSVファイルは内閣府が公開している最新の祝日ファイルを使用します。
VBA サンプルコード「祝日CSVのダウンロード」
- 上記で照会した内閣府の祝日CSVファイルをダウンロードするVBAコードとなります。
123456789101112131415161718192021222324252627282930313233343536'ダウンロード用API(引数:0,Urlリンク,フォルダー名,0,0)を受け取るPrivate Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _(ByVal pCaller As Long, _ByVal szURL As String, _ByVal szFileName As String, _ByVal dwReserved As Long, _ByVal lpfnCB As Long _) As LongOption ExplicitSub csv_download_Click()Dim SUrl As StringDim Fol As StringDim Fname As StringDim SNow As StringSNow = Replace(Time, ":", "_")Fol = "C:\"Fname = Fol & "祝日一覧.csv" '祝日一覧.csvとしてダウンロードします。'日本の祝日CSVデータのリンクSUrl = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"Dim ReturnF As Variant 'API関数を格納する変数'ファイルをダウンロード・フォルダに格納'第二引数にURL,第三引数に任意のフォルダーパス,その他の引数は0を渡します。ReturnF = URLDownloadToFile(0, SUrl, Fname, 0, 0)If ReturnF <> 0 Then '失敗したら0以外の数値を返します。MsgBox "失敗!" & ReturnFExit SubEnd IfMsgBox "祝日CSVファイルをダウンロードしました。"End Sub
VBA サンプルコード「ダウンロードしたCSVをExcelへ表示」
- ダウンロードしたCSVファイルを読み込んでExcelへ表示するVBAコードとなります。
123456789101112131415161718192021222324252627Dim varFileName As VariantDim intFree As IntegerDim strRec As StringDim strSplit() As StringDim row As LongDim col As LongvarFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _Title:="CSVファイルの選択")If varFileName = False ThenExit SubEnd IfintFree = FreeFile '空番号を取得Open varFileName For Input As #intFree 'CSVファィルをオープンrow = 3Do Until EOF(intFree)Line Input #intFree, strRec '1行読み込みrow = row + 1strSplit = Split(strRec, ",") 'カンマ区切りで配列へFor col = 0 To UBound(strSplit)Cells(row, col + 1) = strSplit(col)NextLoopClose #intFree