サイトについて      連絡先   検索

VBA Dir 関数

はじめに

Excel VBA マクロの Dir 関数を紹介します。

Dir 関数は、指定したパターンに一致するファイルやフォルダのパスを返します。

ファイルの存在確認などに使用します。

  • 目次
    • 構文
    • 解説
    • 使用例

構文

Dir(パターン, 属性)
パターン属性が一致するファイルやフォルダのパスを取得します。

Dir()
複数のファイルやフォルダが一致するときに次のパスを取得します。

引数「パターン」省略できます。ファイルやフォルダのパスを指定します。
ワイルドカードを指定できます。
引数「属性」省略できます。取得するファイルの属性を組み合わせて指定します。
戻り値の型文字列型 (String)

引数「属性」

名前 属性
vbNormal (既定)0標準ファイル
vbReadOnly1読み取り専用ファイル
vbHidden2隠しファイル
vbSystem4システム ファイル
vbVolume8ボリューム ラベル。この値を指定すると、すべての属性は無効になります。
vbDirectory16フォルダ

解説

パターンに一致するファイルが見つかったときは、そのファイル名に拡張子を付けて返します。

パターンに使用できるワイルドカードには次のものがあります。

ワイルドカード * を使用して複数のファイルが一致するときは、最初のファイル名を返します。 2 つめ以降のファイル名を取得したいときは、引数を指定しないで Dir 関数を呼び出します。

パターンにフォルダのパスを指定すると、その直下のファイル一覧を取得できます。

属性を省略すると標準ファイルが条件になります。

属性に「vbReadOnly + vbHidden」を指定すると標準ファイル、読み取り専用ファイル、隠しファイルのいづれかのファイルが条件になります。読み取り専用ファイルだけ返したいということはできません。必ず標準ファイルも条件に含まれます。

GetAttr 関数を使用して、そのファイルが読み取り専用か調べることができます。

ファイルが見つからないときは空文字""を返します。

使用例

ファイルの存在確認。


Dim s As String

s = Dir("D:\test.txt")
Debug.Print (s) ' test.txt (存在するとき)
  
s = Dir("D:\test")
Debug.Print (s) ' "" (存在しない)

s = Dir("D:\test2.txt")
Debug.Print (s) ' "" (存在しない)

指定した属性のファイルを取得。


Dim s As String

' test.txt が標準ファイルまたは読み取り専用のとき
s = Dir("D:\test.txt", vbReadOnly)
Debug.Print (s) ' test.txt

' test.txt が標準ファイルまたは読み取り専用または隠しファイルのとき
s = Dir("D:\test.txt", vbReadOnly + vbHidden)
Debug.Print (s) ' test.txt

' 読み取り専用ファイルかチェック
Dim b As Boolean
s = Dir("D:\test.txt", vbReadOnly)
b = (GetAttr(s) And vbReadOnly) <> 0
Debug.Print(b) ' True: 読み取り専用、False: その他

ファイルの一覧を取得。


Dim s As String

' t から始まるファイルで拡張子が .txt のファイル
s = Dir("D:\t*.txt")
Do While s <> ""
    Debug.Print (s)
    s = Dir ' 次のファイル名を取得
Loop

' t のみまたは t で始まる二文字のファイルで拡張子が .txt のファイル
s = Dir("D:\t?.txt")
Do While s <> ""
    Debug.Print (s)
    s = Dir ' 次のファイル名を取得
Loop

' D ドライブ直下のファイル一覧を出力
s = Dir("D:\")
Do While s <> ""
    Debug.Print (s)
    s = Dir ' 次のファイル名を取得
Loop

' D ドライブ直下のフォルダ一覧を出力
s = Dir("D:\", vbDirectory)
Do While s <> ""
    Debug.Print (s)
    s = Dir ' 次のフォルダ名を取得
Loop
  • 目次
    • 構文
    • 解説
    • 使用例