朝会発表テーマ

Access VBA のDir関数について

1.機能

Dir関数は引数に指定したファイルが存在する場合、ファイル名を返す関数
※ファイルの存在確認にしか使用したことが無い
引数を省略した場合、前回実行時の引数に一致する値のうち、まだ取得していない値を返す

2.引数

引数は2つ。どちらも省略可能。

引数1:ファイル

ワイルドカードの指定可能
Cドライブに存在する全エクセルファイル

Dir("C:*.xls")

拡張子指定はxlsになっているが、関数の結果としては
xlsx、xlsmなどのxlsで始まる拡張子や、大文字でXLSのファイルも表示される

引数2:対象

検索対象
0通常のファイル
2隠しファイル
4システムファイル
8ボリュームラベル
16フォルダ

このうち複数を対象とする場合、値の合計を引数にする。
通常のファイルが0なので、隠しファイルのみ、システムファイルのみなどを検索できず、
必ず通常のファイルも検索対象になる。

3.使用方法

フォルダ内の全てのファイルを取得したい場合、
①対象フォルダを引数にし、Dir関数を呼ぶ
②Dir関数の戻り値が空になるまで引数無しのDir関数でファイル名を取得する
このような流れになる。

Dim fileName As String
fileName = Dir("C:\excelFiles*.xls", 0)
Do While fileName <> ""

~ここで取得したファイルに対して処理を行う~

fileName = Dir()
Loop

C:\excelFilesに存在するファイルが下の1フォルダ5ファイルだった場合、

×2015朝会フォルダ
201601朝会.xlsファイル
201602朝会.xlsxファイル
×201603朝会.txtファイル
201604朝会.XLSファイル
201605朝会.XLSXファイル

○が付いている4ファイル名を取得することができる

4.ファイルの存在確認専用関数

・FileSystemObject.FileExists
・WizHook.FileExists
などがある。
どちらも引数は1つで、存在確認をしたいファイルパスを渡すことで、存在する場合True
存在しない場合Falseが返される。

コメント