注: Microsoft Jet Expression Service がサンドボックス モードで実行されている場合 (安全でない可能性がある式の評価は行われません)、このトピックで説明する関数、メソッド、オブジェクト、またはプロパティは無効です。 サンドボックス モードの詳細については、ヘルプで "サンドボックス モード" を検索してください。
指定したパターン、ファイル属性、またはドライブのボリューム ラベルに一致する、ファイル、ディレクトリ、フォルダーの名前を表す文字列を返します。
構文
Dir[(pathname [, attributes] )]
Dir 関数の構文には、次の引数があります。
引数 |
説明 |
pathname |
省略可能。 ファイル名を指定する文字列式には、ディレクトリかフォルダー、およびドライブを指定できます。 引数 pathname が見つからない場合は、長さ 0 の文字列 ("") が返されます。 |
attributes |
省略可能。 定数または数値式を列挙してファイル属性を指定します。 省略すると、引数 pathname と一致し、属性を持たないファイルが返されます。 |
設定値
引数 attributes引数 の設定値は次のとおりです。
定数 |
値 |
説明 |
vbNormal |
0 |
(既定値) 属性のないファイルを指定します。 |
vbReadOnly |
1 |
属性のないファイルと読み取り専用ファイルを指定します。 |
vbHidden |
2 |
属性のないファイルと隠しファイルを指定します。 |
VbSystem |
4 |
属性のないファイルとシステム ファイルを指定します。 Macintosh では使用できません。 |
vbVolume |
8 |
ボリューム ラベルを指定します。その他の属性が指定されている場合、 vbVolume は無視されます。 Macintosh では使用できません。 |
vbDirectory |
16 |
属性のないファイルと、ディレクトリまたはフォルダを指定します。 |
vbAlias |
64 |
指定ファイル名はエイリアスです。 Macintosh でのみ使用できます。 |
注: これらの定数は、Visual Basic for Applications (VBA) で指定され、実際の値の代わりにコード内の任意の場所で使用できます。
解説
Microsoft Windows では、Dir 関数は、複数文字 (*) および単一文字 (?) のワイルドカードを使用して、複数のファイルを指定できます。 Macintosh では、このような文字は有効なファイル名の文字として扱われるため、複数のファイルを指定するためにワイルドカードとして使用することはできません。
Macintosh ではワイルドカードを使用できないため、ファイル タイプを使用して、ファイルのグループを識別します。 ファイル名を使用する代わりに、MacID 関数を使用してファイル タイプを指定できます。 たとえば、次のように記述すると、現在のフォルダ内で最初のテキスト ファイルの名前が返されます。
Dir("SomePath", MacID("TEXT"))
フォルダー内のすべてのファイルについて繰り返すには、空文字列を指定します。
Dir("")
Windows で Dir 関数に MacID 関数を使用すると、エラーが発生します。
引数 attribute の値が 256 を超える場合は、MacID 関数の値と見なされます。
Dir 関数を初めて呼び出すときに引数 pathname を指定しないと、エラーが発生します。 ファイル属性を指定する場合は、引数 pathname も指定する必要があります。
Dir 関数は、引数 pathname と一致した最初のファイル名を返します。 引数 pathname と一致するファイル名をさらに取得するには、Dir 関数を引数なしで再度呼び出します。 一致するファイル名がなくなったら、Dir 関数は長さ 0 の文字列 ("") を返します。 長さ 0 の文字列が返されると、それに続く呼び出しで引数 pathname を指定しない場合にエラーが発生します。 現在の引数 pathname に一致するファイル名すべてを取得せずに、新しい pathname に変更することができます。 ただし、Dir 関数は再帰的に呼び出すことはできません。 vbDirectory 属性で Dir 関数を呼び出しても、継続してサブディレクトリを返すことはありません。
ヒント ファイル名を取得する順序は不確定なので、返されたファイル名を配列に格納し、この配列の並べ替えを行うことができます。
例
注: 次の例は、Visual Basic for Applications (VBA) モジュールでのこの関数の使用方法を示しています。 VBA の使用方法の詳細については、[検索] の横にあるドロップダウン リストで [開発者用リファレンス] を選び、検索ボックスに検索する用語を入力します。
この例では、Dir 関数を使用して特定のファイルやディレクトリが存在するかどうかを確認します。 Macintosh では、"HD:" が既定のドライブ名で、パス名の各部分は円記号ではなくコロンで区切られます。 さらに、Windows のワイルドカード文字は、Macintosh ではファイル名の有効な文字として扱われます。 ただし、MacID 関数を使用すれば、ファイル グループを指定できます。
Dim MyFile, MyPath, MyName
' Returns "WIN.INI" (on Microsoft Windows) if it exists. MyFile = Dir("C:\WINDOWS\WIN.INI") ' Returns filename with specified extension. If more than one *.ini ' file exists, the first file found is returned. MyFile = Dir("C:\WINDOWS\*.INI") ' Call Dir again without arguments to return the next *.INI file in the ' same directory. MyFile = Dir ' Return first *.TXT file with a set hidden attribute. MyFile = Dir("*.TXT", vbHidden) ' Display the names in C:\ that represent directories. MyPath = "c:\" ' Set the path. MyName = Dir(MyPath, vbDirectory) ' Retrieve the first entry. Do While MyName <> "" ' Start the loop. ' Ignore the current directory and the encompassing directory. If MyName <> "." And MyName <> ".." Then ' Use bitwise comparison to make sure MyName is a directory. If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then Debug.Print MyName ' Display entry only if it End If ' it represents a directory. End If MyName = Dir ' Get next entry. Loop