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が返される。
コメント