【Excel】CSVデータを取り込む前にパスを自動で取得するマクロ

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

マクロの概要

  • ダウンロード フォルダ内の 「勤務実績.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をコピーしました