Примечание: Функция, метод, объект или свойство, описанные в данном разделе, отключаются, если служба обработки выражений Microsoft Jet выполняется в режиме песочницы, который не позволяет рассчитывать потенциально небезопасные выражения. Для получения дополнительных сведений выполните в справке поиск по словам "режим песочницы".
Возвращает значение типа String, определяющее имя файла, каталога или папки, которое соответствует указанному шаблону, атрибуту файла либо метке тома диска.
Синтаксис
Dir[(путь [, атрибуты] )]
Функция Dir имеет следующие аргументы:
Аргумент |
Описание |
имя_пути |
Необязательный аргумент. Строковое выражение, указывающее имя файла, может включать каталог или папку и диск. Если pathname не найден, возвращается строка нулевой длины (""). |
атрибуты |
Необязательный аргумент. Константа или числовое выражение, сумма которого определяет атрибуты файла. Если этот аргумент опущен, функция возвращает файлы, соответствующие пути, но не имеющие атрибутов. |
Параметры
Аргумент атрибутыаргумент может принимать следующие значения:
Константа |
Значение |
Описание |
vbNormal |
0 |
(По умолчанию.) Определяет файлы без атрибутов. |
vbReadOnly |
1 |
В дополнение к файлам без атрибутов определяет файлы, доступные только для чтения. |
vbHidden |
2 |
В дополнение к файлам без атрибутов определяет скрытые файлы. |
VbSystem |
4 |
В дополнение к файлам без атрибутов определяет системные файлы. Недоступно в macOS. |
vbVolume |
8 |
Указывает метку тома; Если указан какой-либо другой атрибут, vbVolume игнорируется. Недоступно в macOS. |
vbDirectory |
16 |
В дополнение к файлам без атрибутов определяет каталоги (папки). |
vbAlias |
64 |
Указанное имя файла является псевдонимом. Доступно только в macOS. |
Примечание: Приведенные здесь константы определены в Visual Basic для приложений (VBA), что позволяет заменять ими числовые значения в любом месте программы.
Замечания
В Microsoft Windows функция Dir поддерживает использование подстановочных знаков: звездочки (*), заменяющей несколько символов, и вопросительного знака (?), заменяющего один символ, для указания нескольких файлов. В macOS такие знаки воспринимаются как допустимые символы имени файла и не могут использоваться в качестве подстановочных знаков.
Так как macOS не поддерживает использование подстановочных знаков, для определения группы файлов используйте тип файла. Чтобы вместо имен файлов указать тип файла, воспользуйтесь функцией MacID. Например, следующий оператор возвращает имя первого текстового файла в текущей папке:
Dir("SomePath", MacID("TEXT"))
Чтобы вывести следующий файл в папке, укажите пустую строку:
Dir("")
При совместном использовании функций MacID и Dir в Windows возникнет ошибка.
Любое значение аргумента атрибуты, превышающее 256, считается значением функции MacID.
При первом вызове функции Dir необходимо определить аргумент путь, иначе возникнет ошибка. При определении атрибутов файла необходимо также указать аргумент путь.
Функция Dir возвращает первый файл, имя которого соответствует значению аргумента путь. Чтобы найти другие файлы, имена которых соответствуют значению аргумента путь, снова вызовите функцию Dir, но без аргументов. Если других соответствий найдено не будет, функция Dir возвратит пустую строку (""). После того как получена пустая строка, необходимо указать аргумент путь при последующих вызовах функции, иначе возникнет ошибка. Вы можете изменить значение аргумента путь, не дожидаясь получения всех имен файлов, которые соответствуют старому значению аргумента путь. Однако нельзя осуществить рекурсивный вызов функции Dir. С помощью функции Dir с атрибутом vbDirectory невозможно последовательно возвращать подкаталоги.
Совет Так как имена файлов возвращаются не по порядку, можно сохранить их в массиве, а затем отсортировать его.
Пример
Примечание: В примерах ниже показано, как использовать эту функцию в модуле Visual Basic для приложений (VBA). Чтобы получить дополнительные сведения о работе с VBA, выберите Справочник разработчика в раскрывающемся списке рядом с полем Поиск и введите одно или несколько слов в поле поиска.
В этом примере функция Dir используется для того, чтобы убедиться в наличии определенных файлов и каталогов. В macOS диск по умолчанию обозначается «HD:», а части аргумента «путь» отделяются друг от друга двоеточиями вместо обратной косой черты. Кроме того, в macOS подстановочные знаки Windows воспринимаются как допустимые символы имени файла. Для указания группы файлов можно воспользоваться функцией 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