Dir関数のポイント

このページでは、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

  1. sample
  2. sample.xlsx
  3. test\sample.xlsx
  4. D:\test\sample.xlsx

正解を見る

2

コメント