使用 Microsoft 登录
登录或创建帐户。
你好,
使用其他帐户。
你有多个帐户
选择要登录的帐户。

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

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

语法

Dir[ (pathname [, attributes] ) ]

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

参数

说明

路径

可选。 指定文件名的字符串表达式包括目录、文件夹和驱动器。 如果未找到 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 函数时必须指定路径名,否则会发生错误。 如果还指定了文件属性,则必须包含 路径名

Dir 返回与 路径名匹配的第一个文件名。 若要获取与 路径名匹配的任何其他文件名,请再次调用 Dir ,不带参数。 如果不再匹配文件名, Dir 将返回零长度字符串 (“”) 。 返回零长度字符串后,必须在后续调用中指定 路径名 ,否则会发生错误。 可以更改为新 路径名 ,而无需检索与当前 路径名匹配的所有文件名。 但是,不能递归调用 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

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。

此信息是否有帮助?

你对语言质量的满意程度如何?
哪些因素影响了你的体验?
按“提交”即表示你的反馈将用于改进 Microsoft 产品和服务。 你的 IT 管理员将能够收集此数据。 隐私声明。

谢谢您的反馈!

×