Ниже мы рассмотрим программу в Excel VBA, которая перебирает все замкнутые рабочие книги и листы в каталоге, и отображает все имена.

Скачать Book1.xlsx, Book2.xlsx, Book3.xlsx, Book4.xlsx и Book5.xlsx и добавить их в «C: \ Test \»

Ситуация:

Files in a Directory Example

Добавьте следующие строки кода к командной кнопке:

  1. Во-первых, мы объявляем две переменные типа String, объект Worksheet и две переменные типа Integer.

Dim directory As String, fileName As String, sheet As Worksheet, i As Integer, j As Integer
  1. Для того, чтобы избежать мерцания экрана, отключить обновление экрана.

Application.ScreenUpdating = False
  1. Инициализировать переменный каталог. Мы используем функцию Dir, чтобы найти первый .XL ?? Файл хранится в этом каталоге.

directory = "c:\test\"

fileName = Dir(directory & ".xl??")

Примечание: (?) Функция Dir поддерживает использование множественного характера (*) и одного символа подстановочных знаков для поиска всех различных типов файлов Excel.

  1. Переменная имя_файла теперь держит имя первого файла Excel находится в каталоге. Добавить Do While Loop.

Do While fileName <> ""

Loop

Добавьте следующие строки кода (при 5, 6, 7, 8 и 9) к петле.

  1. Инициализировать переменные типа Integer и добавить имя файла Excel в первом столбце строки я.

i = i + 1

j = 2

Cells(i, 1) = fileName
  1. Там нет простого способа извлечения данных (или имена листов) из закрытых файлов Excel. Поэтому мы открываем файл Excel.

Workbooks.Open (directory & fileName)
  1. Добавьте все имена листов из файла Excel в других столбцах строки I.

For Each sheet In Workbooks(fileName).Worksheets

Workbooks("files-in-a-directory.xlsm").Worksheets(1).Cells(i, j).Value = sheet.Name

j = j + 1

Next sheet
  1. Закройте файл Excel.

Workbooks(fileName).Close
  1. Функция Dir специальная функция. Для того, чтобы получить другие файлы Excel, вы можете использовать функцию Dir снова без аргументов.

fileName = Dir()

Примечание: если не больше имен файлов не совпадают, то функция Dir возвращает нулевой длины строки ( «»). В результате, Excel VBA оставит делать во время цикла.

  1. Включите экран обновления снова (вне цикла).

Application.ScreenUpdating = True
  1. Тест программы.

Результат:

Files in a Directory in Excel VBA