Dir 関数

適用先
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Microsoft Jet Expression Service がサンドボックス モードで実行されている場合 (安全でない可能性がある式の評価は行われません)、このトピックで説明する関数、メソッド、オブジェクト、またはプロパティは無効です。 サンドボックス モードの詳細については、ヘルプで "サンドボックス モード" を検索してください。

指定したパターン、ファイル属性、またはドライブのボリューム ラベルに一致する、ファイル、ディレクトリ、フォルダーの名前を表す文字列を返します。

構文

Dir[(pathname [, attributes] )]

Dir 関数の構文には、次の引数があります。

引数 説明
pathname 省略可能。 ファイル名を指定する文字列式には、ディレクトリかフォルダー、およびドライブを指定できます。 pathname が見つからない場合は、長さ 0 の文字列 ("") が返されます。
attributes 省略可能です。 sum でファイル属性を指定する定数式または数値式。 省略した場合は、 パス名 と一致するが属性を持たないファイルを返します。

    

設定

属性引数の設定は次のとおりです。

定数 説明
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 では、複数のファイルを指定するために、複数の文字 (*) と 1 文字 (?) のワイルドカードの使用がサポートされています。 Macintosh では、このような文字は有効なファイル名の文字として扱われるため、複数のファイルを指定するためにワイルドカードとして使用することはできません。

Macintosh ではワイルドカードを使用できないため、ファイル タイプを使用して、ファイルのグループを識別します。 ファイル名を使用する代わりに、MacID 関数を使用してファイル タイプを指定できます。 たとえば、次のように記述すると、現在のフォルダ内で最初のテキスト ファイルの名前が返されます。

Dir("SomePath", MacID("TEXT"))

フォルダー内のすべてのファイルについて繰り返すには、空文字列を指定します。

Dir("")

Windows で Dir 関数に MacID 関数を使用すると、エラーが発生します。

256 を超える 属性値、MacID 値と見なされます。

Dir 関数を初めて呼び出す場合、またはエラーが発生する場合は、pathname を指定する必要があります。 ファイル属性も指定する場合は、 pathname を含める必要があります。

Dir は 、パス名と一致する最初のファイル名を返 します パス名と一致する追加のファイル名を取得するには、引数なしで Dir を再度呼び出します。 一致するファイル名がなくなったら、Dir 関数は長さ 0 の文字列 ("") を返します。 長さ 0 の文字列が返されたら、後続の呼び出しで 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