構文
構文は以下の通りです。
解説
Dir関数は、検索結果として文字列(ファイル名)を返します。最初の呼び出しでは、検索結果の最初のファイル名を返し、2回目以降の呼び出しでは、次のファイル名を返します。ファイルがなくなった場合は、空の文字列を返します。
●path:ファイルを検索するディレクトリのパスを指定します。省略可能であり、省略した場合は現在のディレクトリが対象になります。
●attributes:ファイルの属性を指定します。省略可能であり、省略した場合は通常のファイルが対象になります。
使い方
次の例では、指定したディレクトリ内のすべてのファイル名を表示します。
Dim filePath As String
filePath = "C:\path\to\directory\" ' 検索するディレクトリのパスを指定
Dim fileName As String
fileName = Dir(filePath) ' 最初のファイル名を取得
Do While fileName <> "" ' ファイル名が空の場合はループ終了
MsgBox fileName ' ファイル名を表示
fileName = Dir ' 次のファイル名を取得
Loop
End Sub
上記の例では、filePath変数に検索するディレクトリのパスを指定し、fileName変数に最初のファイル名を取得します。その後、Do Whileループを使用して、ファイル名が空の場合(すべてのファイルを取得した場合)まで、ファイル名を表示します。最後に、Dir関数を再度呼び出して次のファイル名を取得します。
また、Dir関数にはattributesパラメータを指定することもできます。例えば、次のようにattributesパラメータにvbDirectoryを指定することで、ディレクトリ(フォルダ)のみを取得することができます。以下にその例を示します。
Dim directoryPath As String
directoryPath = "C:\path\to\directory\" ' 検索するディレクトリのパスを指定
Dim directoryName As String
directoryName = Dir(directoryPath, vbDirectory) ' 最初のディレクトリ名を取得
Do While directoryName <> "" ' ディレクトリ名が空の場合はループ終了
If (GetAttr(directoryPath & directoryName) And vbDirectory) = vbDirectory Then ' ディレクトリかどうかを判定
MsgBox directoryName ' ディレクトリ名を表示
End If
directoryName = Dir ' 次のディレクトリ名を取得
Loop
End Sub
上記の例では、directoryPath変数に検索するディレクトリのパスを指定し、directoryName変数に最初のディレクトリ名を取得します。その後、Do Whileループを使用して、ディレクトリ名が空の場合(すべてのディレクトリを取得した場合)まで、ディレクトリ名を表示します。ディレクトリかどうかを判定するために、GetAttr関数を使用してvbDirectoryとのビット演算を行います。
プログラミング例
1.ファイルの数を取得する例
指定したディレクトリ内のファイルの数を取得する例です。
Dim filePath As String
Dim fileName As String
Dim fileCount As Integer
filePath = "C:\path\to\directory\" ' 検索するディレクトリのパスを指定
fileName = Dir(filePath) ' 最初のファイル名を取得
fileCount = 0
Do While fileName <> "" ' ファイル名が空の場合はループ終了
fileCount = fileCount + 1 ' ファイルの数をカウント
fileName = Dir ' 次のファイル名を取得
Loop
MsgBox "ファイルの数: " & fileCount
End Sub
2.特定の拡張子を持つファイルを検索する例
指定したディレクトリ内で、特定の拡張子を持つファイル名を表示する例です。
Dim filePath As String
Dim fileName As String
filePath = "C:\path\to\directory\" ' 検索するディレクトリのパスを指定
fileName = Dir(filePath, "*.xlsx") ' 最初の.xlsxファイル名を取得
Do While fileName <> "" ' ファイル名が空の場合はループ終了
MsgBox fileName ' ファイル名を表示
fileName = Dir ' 次のファイル名を取得
Loop
End Sub
上記の例では、`filePath`変数に検索するディレクトリのパスを指定し、`fileName`変数に最初の`.xlsx`ファイル名を取得します。その後、`Do While`ループを使用して、ファイル名が空の場合(すべてのファイルを取得した場合)まで、ファイル名を表示します。`.xlsx`のような特定の拡張子を指定するために、`Dir`関数の第2引数に`"*.xlsx"`というパターンを指定します。
まとめ
Dir関数は、指定したディレクトリ内のファイル名やディレクトリ名を取得するために利用されます。是非活用してください。