Excelでスケジュール表やシフト表を作るとき、祝日を入力するのは大変ですよね。そこで便利 なのが 祝日データをインターネットから自動取得(API)して色付けする方法 です。
インターネットから情報を取得するとなるとJSONライブラリなどを使用することがありますが、今回はライブラリは使わずにインターネットから自動取得(API)して色を付けていきます。
これなら いちいち祝日のセルに手入力で操作せず、自動で色を付けることができます!
今回は2024年・2025年・2026年の祝日データを公開している下記のサイトからAPIで祝日データを取得してエクセルシートに反映していきます。
Holidays JP API (日本の祝日API)
Holidays JP API は、日本の祝日一覧をJSONで返却するAPIです (CSV形式もサポート)
動作イメージはこちら
この記事はこんな方におすすめです
- 祝日を自動で反映させたい
- Excelカレンダーやシフト表を正確に管理したい
- エクセルでインターネットから情報を取得(API)して自動化に挑戦してみたい
シートの確認
今回はこのようなシートを使います。A列に2026年の日付が入力されています。

祝日が入力されているセルをマクロ(自動)で全てピンクに塗りつぶします。
VBAコード
Sub ColorHolidaysFromAPI_Simple()
Dim http As Object
Dim response As String
Dim ws As Worksheet
Dim lastRow As Long, r As Range
Dim d As String
Dim pos As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' API呼び出し
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://holidays-jp.github.io/api/v1/date.json", False
http.Send
response = http.responseText
' A列の日付と照合
For Each r In ws.Range("A2:A" & lastRow)
If IsDate(r.Value) Then
d = Format(r.Value, "yyyy-mm-dd")
' JSONテキスト内に日付が含まれるかチェック
pos = InStr(response, """" & d & """")
If pos > 0 Then
r.Interior.Color = RGB(255, 200, 200) ' 薄いピンクで塗りつぶし
End If
End If
Next
MsgBox "祝日をAPIから取得して色付けしました!", vbInformation
End Sub
コードの解説
1.インターネットの祝日API(日本の祝日一覧)にアクセスして、祝日データ(JSONテキスト)を受け取って、変数(response)に格納
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://holidays-jp.github.io/api/v1/date.json", False
http.Send
response = http.responseText
2.A列の日付が祝日データを格納した変数(response)に含まれているかをチェックして、含まれていたら、そのセルを色付け(薄いピンク)
For Each r In ws.Range("A2:A" & lastRow)
If IsDate(r.Value) Then
d = Format(r.Value, "yyyy-mm-dd")
' JSONテキスト内に日付が含まれるかチェック
pos = InStr(response, """" & d & """")
If pos > 0 Then
r.Interior.Color = RGB(255, 200, 200) ' 薄いピンクで塗りつぶし
End If
End If
Next
そして詳しい説明は省きますが、ライブラリを使用しない代わりに祝日名(成人の日など)はセルに反映することができていません。
逆に言うと、祝日の日付のみを取得することによってライブラリの使用をしなくてもインターネットから祝日情報を取得することができるようになっています。
マクロ実行
さきほど入力したコードを実行すると、A列の祝日のセルがピンク色に塗りつぶされました。

コメント