EXCEL VBA Dir関数(2)・ファイル操作・フォルダー・サブフォルダー操作(ファイル存在・ファイル一覧)

 

 

EXCEL VBA Dir関数(2)・ファイル操作・フォルダー・サブフォルダー操作(ファイル存在・ファイル一覧)

 

 

 ●はじめに

今回説明するのは、Dir関数の利用方法を説明いたします。以前、Dir関数の説明(下記リンク)を致しましたが、第2弾として追加でDir関数の利用方法を説明いたします。Dir関数は、ファイルの存在確認やファイル一覧を作成する時などに利用します。VBAでは、主にファイル操作を利用する時に使用します。それでは、Dir関数の利用方法をサンプルプログラムを交えて説明致します。

 

●【EXCEL VBA Dir関数の使い方】については、下記を参照して下さい】

EXCEL VBA Dir関数の使い方(ファイルを検索・フォルダーを検索)

●【Dir関数(Microsoft様)については、下記を参照して下さい】
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/dir-function

 

 

 ●書式の説明

● Dir関数を利用するには、下記の通りに設定を行います。

Dir [ (pathname, [ attributes ] ) ]

・【Dir関数説明】

パーツ説明
pathnameファイル名を指定する文字列式です。ディレクトリまたはフォルダー、及びドライブを含める事が出来ます。 pathname が見つからない場合は、長さ 0 の文字列 ("") が返されます。(省略可能)
attributesファイル属性を指定する定数または数式 (合計によって指定) です。 省略した場合は、pathname に一致する、属性のないファイルが返されます。(省略可能) ※attributesの定数については、下記を参照。

・【attributesの定数説明】

定数説明
vbNormal標準ファイル。(既定値)
vbReadOnly1読み取り専用のファイル。
vbHidden2隠しファイル。
vbSystem4システム ファイル。 ※Macintosh では使用できません。
vbVolume8ボリューム ラベル。※Macintosh では使用できません。
vbDirectory16フォルダー。
vbAlias64エイリアスファイルです。※ Macintosh でのみ使用できます。

 

 

【使用例①】:CドライブのTESTフォルダー内のExcel.xlsxファイルの存在を確認します。

 

【実行後】

ファイルが有る場合は、Hen=「Excel.xlsx」がファイル名が変数に入ります。

×ファイルが無い場合は、Hen=「””」が何も入りません。

【使用例②】:CドライブのTESTフォルダー内のファイルをの確認します。

 

【実行後】
●フォルダー内の拡張子(xlsx)のファイル一覧がメッセージボックスに表示されました。

 

 

 

EXCEL VBA Dir関数 指定したフォルダー内のファイル数をカウントする。

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、指定したフォルダー内(C:\Windows)のファイル数をカウントするサンプルプログラムです。
※指定したフォルダーのファイル数をカウントします。フォルダー数はカウントします。

【プログラムの流れ】
① ファイルの数をカウント0にする。
② ファイルをカウントするフォルダー(C:\Windows)を指定・1件目のファイルを読み込む ※(ファイルの種類全て)
③ フォルダー内のファイルが無くなるまで繰り返す。
④ ファイル数をカウントする。
⑤ フォルダー内の次のファイルをカウントする。
⑥ 読み込むファイルが無くなるまで繰り返す③へ
⑦ 全てのファイルをカウントが終わったらメッセージボックスにファイル数を表示します。

 

 

 

 

●実行前~実行後 ※プログラム実行後、指定したフォルダー内(C:¥Windowsフォルダー)のファイル数がメッセージボックスに表示されました。
(画面クリックして拡大)

 

 

 

 

EXCEL VBA Dir関数 指定したフォルダー内のファイル一覧をシートに表示する。(ファイル名・ファイル容量・更新日時)

 

 

 ●プログラム説明 (サンプル②)

下記のサンプルプログラムは、指定したフォルダー内のファイル名・ファイル容量・ファイルの更新日時をEXCELシートに一覧表示させるサンプルプログラムです。

 

【プログラムの流れ】
① アクティブワークシートのクリアー(文字列削除)
② シートの1行名に表題を作成します。(A1:No・B1:ファイル名・C1:ファイル容量・D1:更新日時)
③ 初期設定:2行目からファイル一覧を表示するように指定
④ 指定したフォルダー内のファイルが無くなるまで繰り返す。
⑤ A列に番号・B列にファイル名・C列にファイル容量・D列にファイル更新日時を表示する。
⑥ ファイル数をカウントする。+1
⑦ 次のファイルを読み込みます。
⑧ フォルダー内の全てのファイルを読み込むまで繰り返します。④へ

 

 

 

 ●実行前~実行後 ※プログラム実行後、指定したフォルダー内(C:\TEST)のファイル名・ファイル容量・更新日時がEXCELシートに一覧表示されました。
(画面クリックして拡大)

 

 

 

EXCEL VBA Dir関数 サブフォルダーを含めて全てのファイル一覧を出力する。※再帰呼び出し

 

 

 ●プログラム説明 (サンプル③)

下記のサンプルプログラムは、指定したフォルダー内のサブフォルダーを含めて全てのファイル名・ファイル容量・ファイルの更新日時をEXCELシートに一覧表示させるサンプルプログラムです。


【プログラム実行の注意点】
・今回のプログラムは、再帰呼び出しを使い自身のプログラムを何度も繰り返し呼び出す事で、サブフォルダーを含めて全てのファイルを効率よく処理する事が出来ます。

 

【プログラムの流れ】
① アクティブシート(ファイル一覧作成)のクリアーします。
② 1行目に表題を作成(パス・ファイル名・ファイル更新(KB)・更新日時)
③ ファイルを検索するフォルダーを指定(C:\TEST)して【Dir05】を実行します。
④ 指定したフォルダー内の最初のファイルを読み込みます。
⑤ アクティブシートB列の最終行+1を取得します。 ※次のファイルの記述位置を把握します。
⑥ A列にファイルパスを転記します。
⑦ 現在のフォルダー内のファイルを全て読み込むまで繰り返します。※読み込むファイルが無い場合は、⑫へ
⑧ B列にファイル名を転記します。
⑨ C列にファイル容量を転記します。
⑩ D列にファイルの更新日時を転記します。
⑪ 次のファイルを読み込みます。
⑫ 次のフォルダーを指定して、再帰呼び出しで④へ
⑬ 全てのファイル・フォルダーを読み込みましたら終了です。
※ 複数のフォルダーや階層深くのフォルダー・ファイルも再帰呼び出しを利用する事で全てのフォルダー・ファイルを読み込む事が可能になります。

 

 

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、指定したフォルダー(C:¥TEST)内のフォルダー・ファイル名・ファイル容量・更新日時の全てがEXCELシートに一覧表示されました。
(画面クリックして拡大)

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。