Excel VBA|ダウンロードフォルダの最新CSVを自動で取り込むマクロ

スポンサーリンク
この記事は約5分で読めます。

Excel VBAを使って、ダウンロードフォルダに保存された最新のCSVファイルを自動で探し、Excelシートへ取り込む方法を紹介します。
毎回ファイルを選択する手間を減らしたい場合や、「勤務実績.CSV」「勤務実績(1).CSV」のように同名ファイルが増えていく場合に便利です。
今回は、更新日時が最も新しいCSVを判定して、Sheet1へ取り込むマクロを作成します。

マクロの概要

  • ダウンロード フォルダ内の 「勤務実績.CSV」 または「勤務実績(1).CSV」などの最新ファイル を特定する。
  • そのファイルのパスを取得し、Excelにデータを取り込む。

マクロの動作

  1. ダウンロード フォルダ内の 「勤務実績.CSV」 または「勤務実績(1).CSV」などの最新ファイル を特定する。
  2. そのファイルのパスを取得し、Excelにデータを取り込む。
Sub ImportLatestCSV()
Dim dlPath As String
Dim fileName As String
Dim latestFile As String
Dim latestDate As Date
Dim fso As Object
Dim file As Object
Dim ws As Worksheet

‘ ダウンロードフォルダのパスを取得(Windows用) dlPath = Environ(“USERPROFILE”) & “\Downloads\” ‘ ファイルシステムオブジェクトを作成 Set fso = CreateObject(“Scripting.FileSystemObject”) ‘ ダウンロードフォルダの中の最新の「勤務実績.CSV」ファイルを探す latestFile = “” latestDate = #1/1/2000# ‘ 初期化(過去の日付) ‘ ダウンロードフォルダ内のファイルをループ For Each file In fso.GetFolder(dlPath).Files fileName = file.Name ‘ “勤務実績” で始まり、”.CSV” で終わるファイルを探す If fileName Like “勤務実績(*).CSV” Or fileName = “勤務実績.CSV” Then ‘ 更新日時が最新のものを選択 If file.DateLastModified > latestDate Then latestDate = file.DateLastModified latestFile = file.Path End If End If Next file ‘ 最新ファイルが見つからなかった場合の処理 If latestFile = “” Then MsgBox “勤務実績.CSVファイルが見つかりません。”, vbExclamation, “エラー” Exit Sub End If ‘ シートを選択(データを取り込むシート名を指定) Set ws = ThisWorkbook.Sheets(“Sheet1″) ‘ 取り込み先のシート名を変更可 ws.Cells.Clear ‘ 既存データをクリア ‘ CSVデータをインポート With ws.QueryTables.Add(Connection:=”TEXT;” & latestFile, Destination:=ws.Range(“A1”)) .TextFileConsecutiveDelimiter = False .TextFileTabDelimiter = False .TextFileSemicolonDelimiter = False .TextFileCommaDelimiter = True .TextFilePlatform = xlWindows .TextFileStartRow = 1 .TextFileParseType = xlDelimited .TextFileColumnDataTypes = Array(1) ‘ すべてのデータをテキスト形式で取得 .Refresh End With ‘ 取り込み完了メッセージ MsgBox “最新の勤務実績.CSVを取り込みました!”, vbInformation, “完了” End Sub

マクロの動作説明

  1. ダウンロードフォルダのパスを取得
    • Environ("USERPROFILE") & "\Downloads\" を使用してユーザーのダウンロードフォルダを取得します。
  2. ダウンロードフォルダ内の最新の「勤務実績.CSV」を探す
    • Like "勤務実績(*).CSV" を利用して、「勤務実績.CSV」「勤務実績(1).CSV」「勤務実績(2).CSV」などを探します。
    • DateLastModified を比較して最新のファイルを特定します。
  3. Excelにデータをインポートする
    • QueryTables.Add を使用し、CSVデータを 「Sheet1」A1 から取り込みます。
    • 既存データは .Cells.Clear でクリアします。
  4. メッセージボックスで完了を通知
    • MsgBox を使用して、成功メッセージを表示します。

💡 DateLastModifiedDateCreated の違い

プロパティ 意味 信頼性
DateLastModified 最後に内容が変更された時 編集で変わる
DateCreated ファイルが生成された時刻 ダウンロード時刻

にほんブログ村 IT技術ブログ IT技術メモへ

コメント

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