ExcelVBA 指定したフォルダ内のファイル名やフルパスを取得する方法

 

ExcelVBA 指定したフォルダ内のファイル名やフルパスを取得し、リストアップや特定の処理を行うために利用します。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

 

Excel VBAファイル名やフルパスを取得の利用

以下のようなシーンで利用されます。

1.フォルダ内のファイル一覧をExcelシートに出力。

2.特定の拡張子のファイルを探して処理する。

3.ファイル名を取得して他のシステムやレポートで使用する。

使い方

Dir 関数を使って、フォルダ内のファイル名を1つずつ取得できます。

ポイント

1.ワイルドカードの活用
* や ? を使用して特定のパターンのファイルを取得できます(例: *.xlsx)

2.フォルダの指定
フォルダパスが正しく設定されていないとエラーになります。

3.ファイルとフォルダの区別
Dir 関数はファイルだけでなくフォルダも返すため、判別が必要です。

 

Excel VBA ファイル名やフルパスを取得のサンプルコード
指定したフォルダ内のすべてのファイル名を取得して、シートに一覧を作成する

Option Explicit

Sub GetFileNames()
    Dim folderPath As String
    Dim fileName As String
    Dim row As Long
    
    ' フォルダパスを指定
    folderPath = "C:\Users\User\Desktop\sourceFile"
    
    ' 最後がバックスラッシュで終わっていない場合は追加
    If Right(folderPath, 1) <> "\" Then
        folderPath = folderPath & "\"
    End If
    
    ' 初期設定
    fileName = Dir(folderPath) ' 最初のファイル名を取得
    row = 1 ' 出力先の行番号
    
    ' シートに結果を出力
    Do While fileName <> ""
        Cells(row, 1).Value = fileName ' ファイル名
        Cells(row, 2).Value = folderPath & fileName ' フルパス
        row = row + 1
        fileName = Dir ' 次のファイル名を取得
    Loop
    
    MsgBox "ファイル名を取得しました!", vbInformation
End Sub

1. Dir 関数を使って、フォルダ内のファイル名を1つずつ取得します。

2. 取得したファイル名をセルに出力します(列Aにファイル名、列Bにフルパス)

3. 次のファイルを取得するために Dir を再度呼び出します。

 

ExcelVBAエキスパートベーシックは仕事の効率をあげる人の資格です。
本サイト参考:日常業務でExcelを多用し、手動作業を減らしたいと考えている方におすすめの記事

 

特定の拡張子(例: .xlsx)のファイルだけを取得する

Option Explicit

Sub GetSpecificFiles()
    Dim folderPath As String
    Dim fileName As String
    Dim row As Long
    
    ' フォルダパスを指定
    folderPath = "C:\Users\User\Desktop\sourceFile"
    
    ' 初期設定
    fileName = Dir(folderPath & "*.xlsx") ' .xlsxファイルのみ取得
    row = 1 ' 出力先の行番号
    
    ' シートに結果を出力
    Do While fileName <> ""
        Cells(row, 1).Value = fileName ' ファイル名
        row = row + 1
        fileName = Dir ' 次のファイル名を取得
    Loop
    
    MsgBox "Excelファイルのみを取得しました!", vbInformation
End Sub

 

日常業務でExcelを多用し、手動作業を減らしたいと考えている方へ
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

フォルダが存在しない場合にエラーを通知するコード

If Dir(folderPath, vbDirectory) = "" Then
    MsgBox "指定したフォルダが存在しません: " & folderPath, vbExclamation
    Exit Sub
End If

ネットワークドライブを使用する場合、アクセス権や接続状況に注意が必要です。空のフォルダの場合、Dir は空文字列 ("") を返すためループは実行されません。フォルダが存在しない場合のエラー処理を追加するとより堅牢になります。

 

記憶定着問題集

操作方法:1.●●●をクリック(スマホはタップ)で答え表示。2.答えをクリック(スマホはタップ)で●●●表示。1⇔2を繰り返すことで、記憶を定着できます。

1. ●●● 関数を使って、フォルダ内のファイル名を1つずつ取得します。

2. 取得したファイル名をセルに出力します(列Aにファイル名、列Bにフルパス)

3. 次のファイルを取得するために ●●● を再度呼び出します。

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。