注意: 如果 Microsoft Jet Expression Service 在沙盒模式下运行,则禁用本主题中所述的函数、方法、对象或属性,这会阻止评估可能不安全的表达式。 有关沙盒模式的详细信息,请搜索"帮助"中的"沙盒模式"。

返回 一个 字符串,表示与指定的模式或文件属性或驱动器的卷标签匹配的文件、目录或文件夹的名称。

语法

Dir[ (pathname [, attributes] ) ]

Dir函数语法具有以下参数:

参数

说明

pathname

可选。 指定文件名的字符串表达式 - 可能包括目录或文件夹以及驱动器。 如果找不到 pathname, 则 ("") 返回零长度字符串。

attributes

可选。 常量或 数值表达式 ,其总和指定文件属性。 如果省略,则返回与 pathname 匹配 但没有属性的文件。


设置

设置 参数 属性包括:

常数

说明

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 函数指定文件类型,而不是使用文件名。 例如,以下语句返回当前文件夹中第一个 TEXT 文件的名称:

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

若要对文件夹中的所有文件进行访问,请指定一个空字符串:

Dir("")

如果在 Windows 中 将 MacID 函数与 Dir 一起使用,将发生错误。

任何 大于 256 的属性值都被视为 MacID 值。

必须在第 一次 调用 Dir 函数时指定 pathname, 否则会发生错误。 如果还指定了文件属性,则必须包含 pathname。

Dir 返回与 pathname 匹配的第 一个文件名。 若要获取与 pathname匹配的其他任何文件名,请再次调用 Dir, 无需参数。 当文件名不再匹配时 ,Dir 将返回零长度字符串 (") 。 返回零长度字符串后,必须在后续调用中指定 路径 名或发生错误。 可以更改为新的 路径名, 而无需检索与当前路径名匹配 的所有文件名。 但是,不能以递归方式调用 Dir 函数。 使用vbDirectory属性调用Dir不会持续返回子目录。

提示     由于文件名是按任何特定顺序检索的,因此可能需要将返回的文件名存储在 数组 中,然后对数组进行排序。

示例

注意: 以下示例演示了在 VBA Visual Basic for Applications (模块) 函数。 有关使用 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

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?
哪些因素影响了你的体验?

谢谢您的反馈意见!

×