【Excel VBA】祝日をシートに自動で貼り付ける方法

エクセルの祝日シートに内閣府が公開している『国民の祝日』CSVデータを貼り付けるVBAを作成しましたので必要な方はコピペしてください。

前 提:エクセルに祝日シートがあること
    インターネットに接続されていること

注意点:エクセルと同一フォルダ内に「祝日一覧.csv」ファイルが作成されます。

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 Long

Sub CsvDownload()
    Dim DUrl As String
    Dim Fname As String
    Dim ReturnF As Variant 'API関数を格納する変数
 
    Fname = ThisWorkbook.Path & "\祝日一覧.csv"
    
    '日本の祝日CSVデータのリンク
    DUrl = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"
    
    '第二引数にダウンロードURL,第三引数に保存先,その他の引数は0を渡します。
    ReturnF = URLDownloadToFile(0, DUrl, Fname, 0, 0)
    
    If ReturnF <> 0 Then '失敗したら0以外の数値を返します。
        MsgBox "ダウンロードできませんでした。"
    
    Else
        Call FileCopy
        MsgBox "ダウンロードできました。"
   
   End If
End Sub

Sub FileCopy()
    Dim CsvFile
    
    CsvFile = ThisWorkbook.Path & "\祝日一覧.csv"

    ThisWorkbook.Sheets("祝日").Cells.ClearContents  '「祝日」シートのセルをクリア
    
    With Workbooks.Open(CsvFile)
        .Sheets(1).Cells.Copy ThisWorkbook.Sheets("祝日").Range("A1")  '全てのデータをこのブックの「祝日」シートにコピー
        .Close
    End With
    
    Sheets("祝日").Range("A1").Select

End Sub

コメント

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