内閣府のサイトにある
祝日の一覧を…
VBAで取得してシート上に読み込むことが
できます!
他のサイトに記載されている祝日一覧も、
内閣府のサイトを元に作成されているはずです!
※素直に内閣府のURLを紹介すればいいのに…。
※祝日の日にちは何かと変更されるんだから…。
※20年後の祝日の日付をいま計算しても、きっと変更されるし…。
VBAコード
ここでは例として
・既にシート「祝日一覧」が存在する場合は削除
・シート「祝日一覧」を新規作成
・シート「祝日一覧」にWebサイト上の表(今年の祝日一覧)を読み込んで表を作成
・表をテーブル化(=スタイルを設定)
をします。
Option Explicit
Sub getPublicHolidayList()
'祝日一覧を読み込むシート名
Const SHEET_PUBLIC_HOLIDAY As String = "祝日一覧"
'取得したい表を持つURL(今年の祝日一覧)
Const TARGET_URL As String = "https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html"
Dim sheet As Worksheet
Dim sheetPublicHoliday As Worksheet
'------------------------------------------------
'既にシート「祝日一覧」が存在する場合は削除
'------------------------------------------------
For Each sheet In ThisWorkbook.Worksheets
If sheet.Name = SHEET_PUBLIC_HOLIDAY Then
'確認メッセージを非表示
Application.DisplayAlerts = False
'シート削除
Worksheets(SHEET_PUBLIC_HOLIDAY).Delete
'確認メッセージを表示
Application.DisplayAlerts = True
End If
Next
'------------------------------------------------
'シート「祝日一覧」を新規作成
'------------------------------------------------
Set sheetPublicHoliday = Worksheets.Add(After:=Worksheets(Worksheets.Count))
sheetPublicHoliday.Name = SHEET_PUBLIC_HOLIDAY
'------------------------------------------------
'シート「祝日一覧」にWebサイト上の表(今年の祝日一覧)を読み込んで表を作成
'------------------------------------------------
With Worksheets(SHEET_PUBLIC_HOLIDAY).QueryTables.Add(Connection:="URL;" + TARGET_URL, _
Destination:=Range("B2"))
'列幅を元の表と同じにする
.AdjustColumnWidth = True
'書式は設定しない
.WebFormatting = xlWebFormattingNone
'指定したテーブルのみ取得する
.WebSelectionType = xlSpecifiedTables
'2つ目の表(今年の祝日一覧)を取得する
.WebTables = 2
'データ取得を実行する
.Refresh BackgroundQuery:=False
'作成される「クエリと接続」を削除
.Delete
End With
'------------------------------------------------
'表をテーブル化
'------------------------------------------------
With Worksheets(SHEET_PUBLIC_HOLIDAY)
'対象シートをアクティブにする
.Activate
'テーブル化したい範囲の一番左上を選択状態にする
.Range("B2").Select
'テーブル化する(名前定義も含む)
.ListObjects.Add.Name = "祝日一覧テーブル"
End With
End Sub
実行結果
内閣府のサイトから祝日の一覧を取得できました。
参考①
上記のVBAコードは、以下の記事を参考にして作成しました。
●VBAでシートの削除
●VBAでWebサイトの表を読み込む
●VBAで表をテーブル化してスタイルを設定
参考②
内閣府のサイトの祝日の一覧は以下です。
参考③
内閣府のサイトから
・「昭和30年(1955年)から来年の祝日」のCSVファイルを取得
することもできます。
また
・インターネット上のCSVファイルをVBAで取得
することもできます。
また
・CSVファイルをシートへ読み込む
こともできます。
参考④
例えば
・上記の「祝日の一覧を取得するVBA」を
・Windowsのタスクスケジューラで毎年決まった日(2021/6/13等)に自動実行させれば
・自動で祝日の一覧を最新化
できます。
タスクスケジューラからVBA(マクロ)を自動実行する方法は、以下の記事をご確認ください。