こんにちは、ユーキです。
今回は、フォルダ内のファイルを扱うDir関数の使い方を紹介します。
目次
フォルダ内のファイルを取得する関数
Dir関数はフォルダ内のファイルを取得する際に使用します。指定したパターンに一致するファイルだけを取得することも可能です。
Dir関数の使い方
Dir関数は指定したフォルダ内で最初にヒットしたファイル名を返す関数です。対象ファイルが複数ある場合、Dir関数を再度呼び出しすると、次のファイル名を取得できます。
指定フォルダのファイルの一覧を取得した場合には、以下のようなループ文でファイル名を取り出すようにします。
Dim fileName As String
fileName = Dir("C:\Temp\")
Do While fileName <> ""
Debug.Print "DIR=" & fileName
'次のファイル
fileName = Dir()
Loop
特定のファイルだけ取得する
第1引数でファイル名に当たる部分を「*.txt」のようにすると、拡張子がtxtのファイルのみが取得できます。
Dim fileName As String
fileName = Dir("C:\Temp\*.txt")
Do While fileName <> ""
Debug.Print "DIR=" & fileName
'次のファイル
fileName = Dir()
Loop
「*」がワイルドカードになるので、「*売上報告*」のように、部分一致の指定を行うことも可能です。
特殊ファイルやフォルダを取得する
フォルダを指定する場合は、第2引数にvbDirectory(8)指定します。
Dim fileName As String
'フォルダとファイルを取得
fileName = Dir("C:\Temp\", vbDirectory)
Do While fileName <> ""
Debug.Print "DIR=" & fileName
'次のファイル
fileName = Dir()
Loop
指定できるのは以下の値になります。
スクロールできます
定数 | 値 | 説明 |
---|---|---|
vbNormal | 0 | (既定値) 属性のないファイル。 省略した場合、この値が設定されます。通常のファイルを取得します。 |
vbReadOnly | 1 | 属性のないファイルと読み取り専用のファイル。 |
vbHidden | 2 | 属性のないファイルと隠しファイル。 |
vbSystem | 4 | 属性のないファイルとシステム ファイル。 Macintosh では使用できません。 |
vbVolume | 8 | ボリューム ラベル。他の属性を指定した場合は、vbVolume は無視されます。 Macintosh では使用できません。 |
vbDirectory | 16 | 属性のないファイルとディレクトリまたはフォルダー。 |
vbAlias | 64 | 指定されたファイル名はエイリアスです。 Macintosh でのみ使用できます。 |
隠しファイルとフォルダを含めて取得したい場合は、以下のように指定をします。設定はいくつでも可能です。
fileName = Dir("C:\Temp\", vbHidden + vbDirectory)
まとめ
今回は、Dir関数について述べました。FileSystemObjectが使えるのであれば、あまり使う機会はないかもしれません。
ただ、FileSystemObjectが使えない場合には役に立つので、覚えておいて損はない関数になります。
Point
- Dir関数は指定したフォルダで最初にヒットした1件目のファイル名を返す
- パスを決めて読み込んだあとは、Dir()で指定フォルダのファイルが取得できる
- 第2引数を指定することで、特殊ファイルやフォルダを取得することも可能
少しでもお役に立てば、幸いです。