VBA:FileSystemObjectを利用してフォルダの中のファイル群を列挙する

VBA

FileSystemObjectとは

FileSystemObjectは、「scrrun.dll」というライブラリを利用し、ファイルシステムへのアクセスを提供するためのオブジェクトです。

FileSystemObjectは関数でなくオブジェクトで、VBAで利用可能なライブラリです。

利用する方法としては、参照設定を行わずに利用する実行時バインディングと参照設定を行ってから利用する事前バインディングの2通りがあります。

バインディングについては、以下の記事で説明しています。

関連記事

事前バインディングと実行時バインディングの違い VBAのバインディングとは、外部のオブジェクトの機能をVBAで利用できるようにすることです。 バインディングは2通りの方法があり、実行時に利用できるようにする実行時バインディング(遅延[…]

FileSystemObjectを利用し、選択したフォルダの中のファイル群を列挙する

実行時バインディングと事前バインディングの2つの方法で、FileSystemObjectを利用して選択したフォルダの中のファイルを列挙する方法を紹介します。

実行時バインディング方式で、FileSystemObject利用して選択したフォルダの中のファイルを列挙する

実行時バインディングという方式で、FileSystemoObjectを利用してフォルダの中のファイル群を列挙する方法です。

関数にしていますので、そのままコピーして利用することができます。

事前バインディング方式で、FileSystemObjectを利用して選択したフォルダの中のファイルを列挙する

事前バインディングという方式で、FileSystemoObjectを利用してフォルダの中のファイル群を列挙する方法です。

参照設定で、「Microsoft Scripting Runtime」の設定が必要になります。

関数にしていますので、そのままコピーして利用することができます。

それぞれの関数の説明

strFolder:初期設定するフォルダを指定します。

strGetFiles():列挙したファイルを返します。

使用例

C2セルにフォルダが入っています。

C2セルのフォルダを初期設定として、「フォルダを選択する」関数に渡しています。

選択したフォルダの中のファイル群を列挙するため「ファイルを列挙する」関数に渡しています。

列挙したファイル群を、C3セル以降に代入します。

応用1:FileSystemObjectを利用し、フォルダの中から対象とする拡張子のファイル群を列挙する

実行時バインディングという方式で、FileSystemoObjectを利用してフォルダの中から対象とする拡張子のファイル群を列挙する方法です。

関数にしていますので、そのままコピーして利用することができます。

追加した部分

GetExtensionNameはファイルの拡張子を返しますので、拡張子がxlsxのファイルの列挙ができます。

事前バインディングも、実行時バインディングと同様に追加するのみでOKです。

応用2:FileSystemObjectを利用し、フォルダの中から対象とするファイル群を列挙する

実行時バインディングという方式で、FileSystemoObjectを利用してフォルダの中から対象とするファイル群を列挙する方法です。

関数にしていますので、そのままコピーして利用することができます。

変更した部分

対象とするファイルを列挙する場合は、シンプルな方法としてLikeを利用すると簡単に列挙ができます。対象ファイルが複雑な場合は、正規表現を利用して対象ファイルを列挙する方法があります。

事前バインディングも、実行時バインディングと同様に変更するのみでOKです。