指定したフォルダ内のファイル名全てを取得(Excel VBA)

【本日のミッション】

Excel VBAにて指定したフォルダ内のファイル名全てを取得し、Excelのシートに書き出せ

今日からしばらくこのシリーズをお送り致します。

今回指定フォルダにするのはこちらです。

この第一階層フォルダに入っている、3つのファイル名をExcelシートに書き出そうというミッションです。

Excelマクロ有効ブック(.xlsm)のファイルを新規作成します。

そのファイルのシートに下記の通り、フォルダのパスを入力するセル(A3)、取得したファイル名を書き出すセル(6行目1列目)を準備します。

フォルダパスには、ファイル名を取得したいフォルダのフルパスを入力します。

このシートをアクティブにした状態で、Alt+F11でVsual Basic Editerを起動します。

[挿入]-[標準モジュール]で新規モジュールを作成し、下記の通りコードを記入します。

■スポンサーリンク

Sub 指定したフォルダ内のファイル名を全て取得()
    'アクティブシートから処理対象のフォルダパスを取得し
    'そのフォルダ内のファイル名を全てアクティブシートに取得
    '【変数】
    Dim ws As Worksheet '処理対象シート
    Dim buf As String   'ファイル名
    Dim t_row As Long   '処理ターゲット行
    Dim pt As String    '処理対象パス

    '■変数セット
    Set ws = ActiveSheet '変数ws=アクティブシートをセット
    pt = ws.Range("A3")  '変数ptにセルA3のパスをセット
    t_row = 6            '変数t_rowにファイル名を書き出す初めのセルの行番号(6行目)をセット

    buf = Dir(pt & "\" & "*.*") '変数bufに1個目のファイル名を格納
                                'エクセルのみの場合は「*.*」を「*.xlsx」にする

    Do While buf <> ""             'bufが空欄になるまでDo While内の処理を続ける
        ws.Cells(t_row, 1) = buf   'Cells(t_row, 1)にファイル名を書き出し
        t_row = t_row + 1          'ファイル名を書き出すセルの行番号+1(一つ下の行番号)
        buf = Dir()                '変数bufに次のファイル名を格納(ファイルが無い場合は空欄になる)
    Loop
End Sub

記入したモジュールのどこかにカーソルを置いてF5キーをクリックしてください。

Excelのシートを見てください。

ファイル名を書き出すセルは6行目の1列目から下に順に書き出すようなコードにしています。

第一階層フォルダに入っている3つのファイル名が書き出されました♪

【参考】
変数でよく使われる「buf」「tmp」の意味
Dir関数が取得するファイルの順番
フォルダ内のフォルダ名全てをGetAttrを使って「エラー53 ファイルが見つかりません。」を出さずに取得(Excel VBA)
GetAttrとは?「= vbDirectory」ではなく「And vbDirectory」となるビット演算の疑問
フォルダ名だけを取得したい時に出てくる 「.」 と 「..」 とは?
指定したフォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
CreateObject(“Scripting.FileSystemObject”) を使ってサブフォルダを取得
再帰処理とは?フォルダ内とサブフォルダ内全てのファイル名を取得(Excel VBA)
参照渡し「ByRef」と値渡し「ByVal」の違い(Excel VBA)

■スポンサーリンク

■ランキングに参加しています。
↓このブログを気に入っていただけましたら、ポチッとお願いします。
にほんブログ村 IT技術ブログへ
にほんブログ村