概要
あおいです。
内閣府(下記リンクを参照)が作成している国民の祝日のCSVデータを自動でAccessのテーブルに取り込む処理を作成したので公開します。
◇内閣府 「国民の祝日」について
★メリット
・Accessさえあれば利用できる。
・ボタン一つで全自動で取得。
・事前に祝日データを取得しておくことで内部データベースから読み込めるため処理が早くなる。
動作環境
OS : Windows 7,8,10 32bit,64bit
Microsoft Office Access 2010,2013,2016,2019(Office 365)
事前準備
事前に祝日データを取り込むためのテーブルを作成します。
★項目
1.国民の祝日・休日月日 (日付型)
2.国民の祝日・休日名称 (テキスト型)
★イメージ
必要に応じてフォームにボタンを作り、イベントプロシージャとして次のコードを設定します。
コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
'(C) 2019- Aoiue's memorandum. Option Compare Database Option Explicit #If Win64 Then Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _ (ByVal pCaller As LongPtr, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As LongPtr, ByVal lpfnCB As LongPtr) As LongPtr #Else Private Declare 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 #End If Private Sub B_祝日取得_Click() Const TableName As String = "祝日データを入れたいテーブル" Dim WSH As New WshShell Dim URL As String Dim Path As String Dim Result As LongPtr If MsgBox("処理を開始しますか?", vbYesNo + vbInformation) = vbNo Then MsgBox "処理を中止しました。", vbExclamation: Exit Sub '内閣府(Cabinet Office) 昭和30年(1955年)から 国民の祝日(csv形式) URL = "https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv" Path = WSH.SpecialFolders("Desktop") & "\syukujitsu.csv" Result = URLDownloadToFile(0, URL, Path, 0, 0) If Not Result = 0 Then MsgBox "祝日(CSV)ファイルのダウンロードが正常に完了しませんでした。", vbExclamation Else DoCmd.SetWarnings False DoCmd.RunSQL "DELETE FROM " & TableName DoCmd.TransferText acImportDelim, , TableName, Path, True DoCmd.SetWarnings True Kill Path MsgBox "処理が完了しました。", vbInformation End If End Sub |
実行結果
下記画像のようにデータが取得できていれば完成です。
---コメント---