PR

【ExcelVBA】フォルダ内のファイル名一覧を取得する方法

エクセルVBA-フォルダ内のファイル名を取得-アイキャッチ フォルダの操作
スポンサーリンク

フォルダ内のファイル名の一覧を取得する方法

フォルダ内に保存されている複数のファイル名を取得する方法について説明します。

下のフォルダを対象に、ファイル名を取得します。
1番上にあるsample.xlsmは実行するマクロのファイルです。

エクセルVBA-フォルダ内のファイル名を取得-フォルダの状態

ファイルA.xlsx~ファイルH.xlsxまでのファイル名を取得してシートに書き出すマクロを作成します。

対象のフォルダパスはシートのB2セルに書いておきます。

エクセルVBA-フォルダ内のファイル名を取得-フォルダパスを設定

サンプルマクロで実行している内容
① シートに書いてあるフォルダパスを変数に設定
② FileSystemObjectのインスタンスを作成
③ ファイル名を出力する行数をセット(最初は4行目をセット)
④ フォルダ内のファイルをループ
⑤ ファイルの拡張子が「.xlsx」かどうか判定する
⑥ B列にファイル名を出力する
⑦ 出力する行数をカウントアップ
⑧ 変数の初期化・解放

Sub Sample1()

Dim ForlderPath As String
Dim TargetFile As Object
Dim fso As Object
Dim i As Integer

    'シートに書いてあるフォルダパスを変数に設定…⓵
    ForlderPath = ActiveSheet.Range("B2")
    
    'FileSystemObjectのインスタンスを作成…⓶
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    'ファイル名を出力する行数をセット…⓷
    i = 4
        
    'フォルダ内のファイルをループ…⓸
    For Each TargetFile In fso.GetFolder(ForlderPath).Files
    
        'ファイルの拡張子が「.xlsx」の場合…⓹
        If InStr(TargetFile.Name, ".xlsx") > 0 Then
        
            'ファイル名を出力する…⓺
            Cells(i, 1) = TargetFile.Name
            
            '出力する行数をカウントアップ…⓻
            i = i + 1
        
        End If
        
    Next TargetFile
    
        
    '変数の初期化・解放…⓼
    Set fso = Nothing
    Set TargetFile = Nothing

    
End Sub

▽マクロ実行後
4行目~11行目までファイル名が出力されています。
実行するマクロファイルは拡張子が.xlsmなので出力対象外になっています。

エクセルVBA-フォルダ内のファイル名を取得-実行後

今回は拡張子が「.xlsx」のファイルを対象に出力しましたが、ここを「.csv」などに変えると対象の拡張子を変更することができます。

If InStr(TargetFile.Name, “.xlsx“) > 0 Then
  ファイル名を出力する
EndIf

スポンサーリンク

関連記事

フォルダ内のファイルを順番に開いて書き込みを行うマクロについては下の記事で説明しています。

スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

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