Applies ToMicrosoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

注意: 如果 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

需要更多帮助?

需要更多选项?

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

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