Dir 関数Dir function

指定したパターンまたはファイル属性に一致するファイル、ディレクトリ、フォルダーの名前、またはドライブのボリューム ラベルを表す String を返します。Returns a String representing the name of a file, directory, or folder that matches a specified pattern or file attribute, or the volume label of a drive.

構文Syntax

Dir [ (pathname, [ attributes ] ) ]Dir [ (pathname, [ attributes ] ) ]


Dir 関数の構文には、次の指定項目があります。The Dir function syntax has these parts:

パーツPart 説明Description
pathnamepathname 省略可能。Optional. ファイル名を指定する文字列式です。ディレクトリまたはフォルダー、およびドライブを含めることができます。String expression that specifies a file name; may include directory or folder, and drive. pathname が見つからない場合は、長さ 0 の文字列 ("") が返されます。A zero-length string ("") is returned if pathname is not found.
attributesattributes 省略可能。Optional. ファイル属性を指定する定数または数式 (合計によって指定) です。Constant or numeric expression, whose sum specifies file attributes. 省略した場合は、pathname に一致する、属性のないファイルが返されます。If omitted, returns files that match pathname but have no attributes.

設定Settings

attributes 引数の設定は次のとおりです。The attributes argument settings are:

定数Constant Value 説明Description
vbNormalvbNormal 00 (既定値) 属性のないファイル。(Default) Specifies files with no attributes.
vbReadOnlyvbReadOnly 11 属性のないファイルと読み取り専用のファイル。Specifies read-only files in addition to files with no attributes.
vbHiddenvbHidden 22 属性のないファイルと隠しファイル。Specifies hidden files in addition to files with no attributes.
vbSystemvbSystem 44 属性のないファイルとシステム ファイル。Specifies system files in addition to files with no attributes. Macintosh では使用できません。Not available on the Macintosh.
vbVolumevbVolume 88 ボリューム ラベル。他の属性を指定した場合は、vbVolume は無視されます。Specifies volume label; if any other attribute is specified, vbVolume is ignored. Macintosh では使用できません。Not available on the Macintosh.
vbDirectoryvbDirectory 1616 属性のないファイルとディレクトリまたはフォルダー。Specifies directories or folders in addition to files with no attributes.
vbAliasvbAlias 6464 指定されたファイル名はエイリアスです。Specified file name is an alias. Macintosh でのみ使用できます。Available only on the Macintosh.

注意

これらの定数は、Visual Basic for Applications によって指定され、コードの任意の場所で実際の値の代わりに使用できます。These constants are specified by Visual Basic for Applications and can be used anywhere in your code in place of the actual values.

解説Remarks

Microsoft Windows では、Dir で複数の文字 (*) と 1 文字 (?) のワイルドカードを使用して、複数のファイルを指定できます。In Microsoft Windows, Dir supports the use of multiple character (*) and single character (?) wildcards to specify multiple files. Macintosh では、これらの文字は有効なファイル名の文字と見なされ、複数のファイルを指定するためのワイルドカードとしては使用できません。On the Macintosh, these characters are treated as valid file name characters and can't be used as wildcards to specify multiple files.

Macintosh ではワイルドカードがサポートされないため、ファイルの種類を使用してファイルのグループを識別します。Because the Macintosh doesn't support the wildcards, use the file type to identify groups of files. MacID 関数を使用すると、ファイル名を使わずにファイルの種類を指定できます。You can use the MacID function to specify file type instead of using the file names. たとえば、次のステートメントでは、現在のフォルダー内の最初のテキスト ファイルの名前が返されます。For example, the following statement returns the name of the first TEXT file in the current folder:

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

フォルダー内のすべてのファイルに対して反復処理を行うには、空の文字列を指定します。To iterate over all files in a folder, specify an empty string:

Dir("")

Microsoft Windows では、DirMacID 関数を使用するとエラーが発生します。If you use the MacID function with Dir in Microsoft Windows, an error occurs.

attribute の値が 256 を超える場合は MacID の値と見なされます。Any attribute value greater than 256 is considered a MacID value.

Dir 関数の最初の呼び出しの際に pathname を指定しないとエラーが発生します。You must specify pathname the first time you call the Dir function, or an error occurs. ファイル属性も指定する場合は、pathname を指定する必要があります。If you also specify file attributes, pathname must be included.

Dir は、pathname に一致する最初のファイル名を返します。Dir returns the first file name that matches pathname. pathname に一致する追加のファイル名を取得するには、引数なしで Dir を再度呼び出します。To get any additional file names that match pathname, call Dir again with no arguments. 一致するファイル名がなくなると、Dir は長さ 0 の文字列 ("") を返します。When no more file names match, Dir returns a zero-length string (""). 長さ 0 の文字列が返された後の呼び出しで、pathname を指定しないとエラーが発生します。After a zero-length string is returned, you must specify pathname in subsequent calls, or an error occurs.

現在の pathname に一致するすべてのファイル名を取得せずに、新しい pathname に変更することもできます。You can change to a new pathname without retrieving all of the file names that match the current pathname. ただし、Dir 関数を再帰的に呼び出すことはできません。However, you can't call the Dir function recursively. vbDirectory 属性を付けて Dir を呼び出しても、継続してサブディレクトリが返されることはありません。Calling Dir with the vbDirectory attribute does not continually return subdirectories.

Excel for Mac 2016 では、最初の Dir 関数呼び出しは成功します。With Excel for Mac 2016, the initial Dir function call will succeed. ただし、指定されたディレクトリで繰り返して呼び出すと、エラーが発生します。Subsequent calls to iterate through the specified directory will cause an error, however. 残念ですが、これは既知のバグです。This is a known bug unfortunately.

ヒント

ファイル名は特定の順序で取得されるわけではないため、必要に応じて、返されたファイル名を配列に格納し、その配列を並べ替えます。Because file names are retrieved in no particular order, you may want to store returned file names in an array, and then sort the array.

関連項目See also

サポートとフィードバックSupport and feedback

Office VBA またはこの説明書に関するご質問やフィードバックがありますか?Have questions or feedback about Office VBA or this documentation? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.