![見出し画像](https://assets.st-note.com/production/uploads/images/90861777/rectangle_large_type_2_f9b27ce2ef8e1c3bf6144b25c65ccc03.png?width=800)
ファイル一覧の取得
概要
関数「utlGetFileList」に指定したディレクトリパス配下のファイル一覧を、サブディレクトリも含めて取得し、文字列型の配列にして返します。
説明
関数「utlGetFileList」の第一引数「ariPath(String型)」にファイル一覧を取得したいディレクトリをフルパスで指定します。第二引数「aroFileList()」に文字列型の動的配列を指定します。第三引数「ariFindSubDir」はデフォルトは「True」でサブディレクトリも含めてファイル一覧を取得します。第三引数をの値を「False」にすると、指定されたディレクトリ直下のファイル一覧を取得します。
'//サンプルのマクロファイルに内の「Sheet1」にある使用例
'//Module名:basサンプルを実行
Public Sub サンプルを実行_Click()
Dim tmpFileList() As String
Dim tmpRet As Long
Dim i As Long
Dim tmpPath As String
'//ファイル一覧の取得対象となるディレクトリを指定
tmpPath = "C:\work\Sample\vba"
'//当該関数を実行
tmpRet = utlGetFileList(tmpPath, tmpFileList(), True)
'//取得したファイル一覧(配列)を選択中のシートに出力
For i = 0 To tmpRet - 1
ThisWorkbook.ActiveSheet.Range("A" & 6 + i).Value = i + 1
ThisWorkbook.ActiveSheet.Range("B" & 6 + i).Value = tmpFileList(i)
Next i
MsgBox "処理終了"
End Sub
サンプル実行結果
![サンプル実行結果](https://assets.st-note.com/img/1668304402292-tdoNLVftPK.png)
便利なポイント
当該関数はコマンドプロンプトの「Dir /s /b /a-d [ディレクトリパス\*]」の実行結果と同じなので実行結果を別の方法でも確認できます。
当該関数のコーディングがシンプルなのでメンテナンス性が良いです。
計測していませんが、ファイル数によっては処理速度の速さも実感できると思います。(数百、数千ファイルなどの場合)
使用上の留意点
主に企業に所属される方が使用を検討されている場合、以下に留意ください。
当該関数はコマンドライン「Dir」を実行しています。セキュリティポリシー上、コマンドプロンプトの使用や、外部Appからのコマンドライン実行が許可されていない場合、当該関数を実行できない場合があります。
VBAソースファイル(サンプルソース)
ここから先は
303字
/
1ファイル
¥ 100
この記事が気に入ったらサポートをしてみませんか?