FileSystemObjectの参照設定方法とファイル一覧を取得するVBA|Excel

FileSystemObject(略:FSO)とは、ドライブ・フォルダ・ファイルを操作するオブジェクトで、Excel VBAだけでなく他のプログラミング言語でも使用されます。FileSystemObjectをVBAで使用するためには、「Microsoft Scripting Runtime」を参照設定する必要があります。

関連する「フォルダ内文字列カウントソフト Step 2 サブフォルダも含めフォルダ内からファイルを検索する」を掲載していまので参考にしてください。




Homeに戻る > Excel ファイル操作のTipsへ


ファイル一覧を作成するフォルダ名をC2セルに入力しておきます。
ファイル一覧を作成するフォルダ名をC2セルに入力

サブフォルダも含めてファイル一覧を取得する

ファイル一覧を取得するVBAです。
MyFileからMyFileSubを呼び出します。
実行はMyFifileから行ってください。
ファイル一覧を取得するVBA

● MyFileプロシージャ
・Set tFso = New FileSystemObjectで、FileSystemObjectオブジェクトのインスタンスを作成しています。ここでのインスタンスとは、オブジェクトのコピーです。

● MyFileSubプロシージャ
・SubFoldersプロパティでフォルダ毎にを再帰的に自身を呼び出し、サブフォルダも検索し一覧を取得しています。
・Filesプロパティでファイルを取得しています。
・Pathプロパティでパスを取得しています。ファイル名だけの場合は、Nameプロパティを使います。
・パス名はセルに表示され、表示セルは下の行に移動します。

Option Explicit

Private Sub MyFileSub(ByVal tPath As Folder, lr As Long, lc As Long)
    Dim tInPath As Folder
    Dim tFile As File
    
    For Each tInPath In tPath.SubFolders
        Call MyFileSub(tInPath, lr, lc)
    Next tInPath

    For Each tFile In tPath.Files
        Cells(lr, lc) = tFile.Path
        lr = lr + 1
    Next tFile
    Set tPath = Nothing
End Sub

Sub MyFile()
    Dim tFso As FileSystemObject
    
    Set tFso = New FileSystemObject
    Call MyFileSub(tFso.GetFolder(Range("C2")), 4, 2)
    Set tFso = Nothing
End Sub

FileSystemObjectの参照設定方法

参照設定をせずに上のプログラムを入力し実行した場合、「コンパイル エラー:ユーザ定義型は定義されていません」とエラーが表示されます。
「コンパイル エラー:ユーザ定義型は定義されていません

メニューの[ツール]~[参照設定]をクリックします。
[参照設定]をクリック

参照設定-VBAProjectダイアログが表示されます。
参照可能なライブラリ ファイルのリストから「Microsoft Scripting Runtime」にチェックを入れ、[OK]ボタンをクリックします。
これで設定完了です。
「Microsoft Scripting Runtime」にチェックを入れる

MyFileプロシージャを実行してください。
下のようにサブフォルダも含めたファイル一覧が表示されます。
サブフォルダも含めたファイル一覧が表示

Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved