このページでは、Dir関数の基本的な使い方とVBAエキスパート試験のポイントをまとめた。
基本的な使い方
Dir関数は、ファイルの存在を調べることができる関数だ。ファイルが存在する場合、そのファイル名を返す。
【書式】
Dir(ファイル名)
次のプロシージャはDir関数の使用例だ。ファイル「D:\sample\001.csv」が存在するとき、Dir関数はパスを含まないファイル名「001.csv」を返す。
Sub Test()
Dim ret As String
ret = Dir("D:\sample\001.csv")
MsgBox ret
End Sub
↓
指定したファイルが存在しない場合、Dir関数は空の文字列「""」を返す。
'D:\sample\002.csv は存在しないものとする
Sub Test()
Dim ret As String
ret = Dir("D:\sample\002.csv")
MsgBox ret
End Sub
↓
マクロ内でファイルを開く場合、まずそのファイルの存在を調べることが大切だ(ファイルがないのに開こうとするとエラーが発生するため)。そういうときにDir関数を使う。
次のプロシージャは、ファイル「D:\sample\001.xlsx」が存在する場合はファイルを開く。ファイルが存在しない場合はメッセージボックスを表示する。
Sub Test()
Dim filePath As String
filePath = "D:\sample\001.xlsx"
If Dir(filePath) = "" Then
MsgBox "ファイルが存在しません"
Else
Workbooks.Open filePath
End If
End Sub
エキスパート試験のポイント
Replace関数と組み合わせることによって、ファイルのフルパスからパス部分を取り出すことができる。ファイルのフルパスというのは、たとえば「D:\sample\001.csv」のように、ドライブ名からフォルダ名、ファイル名までを含んだものだ。それに対してパス部分というのは、ファイル名を除外した「D:\sample\」の部分を指す。
次のプロシージャは、ファイル「D:\sample\001.csv」のパス部分をメッセージボックスに表示する。
Sub Test()
Dim fullPath As String
Dim buf As String
fullPath = "D:\sample\001.csv"
buf = Dir(fullPath)
If buf = "" Then
MsgBox "ファイルが存在しません"
Else
'文字列「D:\sample\001.csv」から「001.csv」を探し、
'空の文字列に置き換える
MsgBox Replace(fullPath, buf, "")
End If
End Sub
↓
練習問題
次のプロシージャを実行したところ、メッセージボックスが表示された。その表示内容として正しいものはどれか。次の中から1つ選択しなさい。なお、ファイル「D:\test\sample.xlsx」は存在するものとする。
Sub Test()
MsgBox Dir("D:\test\sample.xlsx")
End Sub
- sample
- sample.xlsx
- test\sample.xlsx
- D:\test\sample.xlsx
正解を見る
2
コメント