Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Функция Dir (полное руководство)

    Функция Dir в VBA Excel: синтаксис, параметры, примеры. Проверка существования файлов, поиск папок, перебор содержимого директорий.

    Что такое функция Dir в VBA

    Функция Dir — один из часто используемых инструментов в арсенале разработчика VBA Excel. Она позволяет работать с файловой системой Windows: проверять существование файлов, находить папки и последовательно перебирать содержимое директорий.

    Функция Dir возвращает строку типа String, содержащую имя файла или папки, которые соответствуют заданному пути, маске поиска или атрибутам. Если подходящий объект не найден, Dir возвращает пустую строку ("").

    Функция активно используется при автоматизации Excel с помощью VBA, работе с отчётами, массовой обработке файлов и построении макросов для импорта данных.

    Синтаксис функции Dir

    Параметры

    • pathname (необязательный) — строка с путём к файлу или папке, которая может включать имя диска, абсолютный или относительный путь, а также маски поиска (*, ?).
    • attributes (необязательный) — числовая константа, определяющая атрибуты файлов или папок, которые нужно найти.

    Важно: параметры pathname и attributes учитываются только при первом вызове Dir. Все последующие вызовы должны выполняться без параметров (Dir()), иначе предыдущий контекст поиска будет сброшен.

    Как работает функция Dir

    Функция Dir использует внутренний указатель состояния и работает в итеративном режиме:

    1. При первом вызове вы указываете путь (и при необходимости атрибуты).
    2. Dir возвращает имя первого найденного файла или папки.
    3. Каждый следующий вызов Dir() возвращает следующий объект в той же директории.
    4. Когда объекты заканчиваются, функция возвращает пустую строку.

    Это поведение необходимо учитывать при написании циклов и при работе с несколькими папками.

    Атрибуты функции Dir (Константы)

    Атрибуты позволяют отфильтровать файлы и папки по их свойствам. Атрибуты являются битовыми флагами* и могут комбинироваться.

    Константа Значение Описание
    vbNormal 0 Обычные файлы (значение по умолчанию).
    vbReadOnly 1 Файлы только для чтения.
    vbHidden 2 Скрытые файлы.
    vbSystem 4 Системные файлы.
    vbDirectory 16 Папки (директории).
    vbArchive 32 Архивные файлы.

    Рекомендация: для объединения атрибутов используйте оператор Or, так как он корректно работает с битовыми флагами.

    Пример:

    * Битовые флаги – это способ использования отдельных битов в переменной (в нашем случае — в константах) для хранения булевых значений.

    Примеры использования Dir в Excel VBA

    Проверка существования файла

    Один из самых распространённых сценариев — проверка, существует ли файл перед его открытием или обработкой.

    Перебор всех файлов в папке

    Функция Dir часто используется для обработки группы файлов одного типа — например, всех Excel‑книг в папке.

    Поиск и перебор только папок

    Чтобы получить список подпапок, используется атрибут vbDirectory. При этом Dir также возвращает служебные элементы . и .., которые необходимо исключить.

    Примечание: в редких случаях GetAttr может вызвать ошибку доступа (например, для защищённых или сетевых каталогов).

    Важные нюансы и ограничения функции Dir

    1. Порядок элементов
      Dir возвращает файлы и папки в порядке, определяемом файловой системой. Не следует полагаться на строгую сортировку.
    2. Отсутствие рекурсии
      Функция не выполняет поиск во вложенных папках автоматически. Для рекурсивного обхода требуется дополнительная логика.
    3. Единственный контекст поиска
      Одновременно можно выполнять только один перебор Dir. Новый вызов с путём сбрасывает предыдущий.
    4. Ограниченные метаданные
      Dir возвращает только имя объекта — без размера, даты создания и других свойств.

    Когда стоит использовать FileSystemObject

    Учитывая ограничения функции Dir, если разработчику требуется:

    целесообразно использовать объект FileSystemObject из библиотеки Microsoft Scripting Runtime.

    Заключение

    Функция Dir в VBA Excel — простой, быстрый и надёжный инструмент для работы с файлами и папками. Она идеально подходит для базовых задач автоматизации: проверки существования файлов, перебора директорий и фильтрации по маске.

    При работе со сложной файловой структурой или расширенными метаданными стоит рассмотреть использование FileSystemObject, однако для большинства повседневных задач Dir остаётся оптимальным решением.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.