今日は、任意のフォルダ内にあるすべてのファイルを取得する方法を取り上げます。
もちろん、サブフォルダ内のファイルもすべて取得します。
今回は、エクセルを使ってやってみましょう。
VBでも、同様の論理でできますので、興味のある方はチャレンジしてみてください。
エクセルの利点は、取得したファイル名をセルに書き出すことができる点でしょう。
ありがたいですね。
それでは、エクセルを起動してください。
ALTキー + F11キー で、Visual Basic Editorを起動してください。
次に、「挿入」メニューから、「標準モジュール」をクリックしてください。
これで、コードを書く準備が出来ました。
今回は、ファイルやフォルダを扱うので、専用の部品を使ってみます。
「ファイルシステムオブジェクト」といいます。
ただし、これは、いきなり使用すると手ごわいので、まずは、参照設定をして、
使いやすいようにします。
「ツール」メニューの「参照設定」をクリックします。

表示されたダイアログボックスの「参照可能なライブラリ ファイル」の一覧から、
「Microsoft Scripting Runtime」を見つけ出して、チェックを入れてください。
OKをクリックして、ダイアログボックスを閉じます。

さあ、それでは、コードを記述しましょう。
以下のように入力してください。
参考までに、画像を載せておきます。

getFiles が、実際の処理をするプロシージャです。
再帰呼び出しを駆使して、サブフォルダ内のファイルを取得できるようになっています。
test が、任意のフォルダを指定して、先ほどのgetFilesを呼び出すプロシージャですね。
このプロシージャの中の、
FolderPath = "C:\sample"
のダブルコートの部分を、任意のフォルダ名に変更してください。
たとえば、マイドキュメントなら、
C:\Documents and Settings\[ここにユーザー名を入れてください]\My Documents
となりますね。
それでは、エクセルに切り替えて、マクロを実行しましょう。
ALTキー + F8キー を押してください。

エクセルのシートにファイル名の一覧が書き出されます。

たくさんのファイルが保存されているフォルダを指定すると、
結構時間がかかったりしますので、ご注意くださいね。
だい
もちろん、サブフォルダ内のファイルもすべて取得します。
今回は、エクセルを使ってやってみましょう。
VBでも、同様の論理でできますので、興味のある方はチャレンジしてみてください。
エクセルの利点は、取得したファイル名をセルに書き出すことができる点でしょう。
ありがたいですね。
それでは、エクセルを起動してください。
ALTキー + F11キー で、Visual Basic Editorを起動してください。
次に、「挿入」メニューから、「標準モジュール」をクリックしてください。
これで、コードを書く準備が出来ました。
今回は、ファイルやフォルダを扱うので、専用の部品を使ってみます。
「ファイルシステムオブジェクト」といいます。
ただし、これは、いきなり使用すると手ごわいので、まずは、参照設定をして、
使いやすいようにします。
「ツール」メニューの「参照設定」をクリックします。

表示されたダイアログボックスの「参照可能なライブラリ ファイル」の一覧から、
「Microsoft Scripting Runtime」を見つけ出して、チェックを入れてください。
OKをクリックして、ダイアログボックスを閉じます。

さあ、それでは、コードを記述しましょう。
以下のように入力してください。
Option Explicit Private fso As FileSystemObject Private c As Integer Sub getFiles(path As String) Dim fs As folders Dim f As folder Dim mFile As File For Each mFile In fso.GetFolder(path).Files Cells(c, 1).Value = mFile.Name c = c + 1 Next Set fs = fso.GetFolder(path).SubFolders If fs.Count = 0 Then Exit Sub For Each f In fs getFiles (f.path) Next End Sub Sub test() Dim FolderPath As String Set fso = New FileSystemObject FolderPath = "C:sample" c = 1 getFiles (FolderPath) Set fso = Nothing End Sub
参考までに、画像を載せておきます。

getFiles が、実際の処理をするプロシージャです。
再帰呼び出しを駆使して、サブフォルダ内のファイルを取得できるようになっています。
test が、任意のフォルダを指定して、先ほどのgetFilesを呼び出すプロシージャですね。
このプロシージャの中の、
FolderPath = "C:\sample"
のダブルコートの部分を、任意のフォルダ名に変更してください。
たとえば、マイドキュメントなら、
C:\Documents and Settings\[ここにユーザー名を入れてください]\My Documents
となりますね。
それでは、エクセルに切り替えて、マクロを実行しましょう。
ALTキー + F8キー を押してください。

エクセルのシートにファイル名の一覧が書き出されます。

たくさんのファイルが保存されているフォルダを指定すると、
結構時間がかかったりしますので、ご注意くださいね。
だい

※コメント投稿者のブログIDはブログ作成者のみに通知されます