【VBA】内閣府のサイトから祝日の一覧を取得する

内閣府のサイトにある

祝日の一覧を、

内閣府のサイトから祝日の一覧
内閣府のサイトにある祝日の一覧


VBAで取得してシート上に読み込むことが
できます!

祝日の一覧をシート上に読み込んだ
祝日の一覧をシート上に読み込んだ
PR

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

内閣府のサイトには複数の表があります。上から2つ目の表が「今年の祝日一覧」のため、「WebTables」に「2」を指定しています(46行目)。

表をテーブル化することで「スタイル」を設定できます。

PR

実行結果

内閣府のサイトから祝日の一覧を取得できました。

祝日の一覧をシート上に読み込んだ
PR

参考①

以下の詳細については、関連記事をご確認ください。

VBAでシートの削除


●VBAでWebサイトの表を読み込む


VBAで表をテーブル化してスタイルを設定

PR

参考②

内閣府のサイトの祝日の一覧は以下です。

タイトルとURLをコピーしました