Ниже мы рассмотрим программу в Excel VBA, что импорт листы из других файлов Excel в один файл Excel.

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

Ситуация:

Import Sheets using Excel VBA

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

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

Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
  1. Выключите обновление экрана и отображение предупреждений.

Application.ScreenUpdating = False

Application.DisplayAlerts = 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) к петле.

  1. Там нет простого способа для копирования листов из закрытых файлов Excel.

Поэтому мы открываем файл Excel.

Workbooks.Open (directory & fileName)
  1. Импорт листов из файла Excel в импорт-sheet.xlsm.

For Each sheet In Workbooks(fileName).Worksheets

total = Workbooks("import-sheets.xlsm").Worksheets.count

Workbooks(fileName).Worksheets(sheet.Name).Copy _

after:=Workbooks("import-sheets.xlsm").Worksheets(total)

Next sheet

Объяснение: переменная общий держит след от общего числа рабочих листов импорта-sheet.xlsm. Мы используем метод копирования объекта Worksheet скопировать каждый лист и вставить его после последнего листа импорта-sheets.xlsm.

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

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

fileName = Dir()

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

  1. Включите обновление экрана и отображение предупреждений снова (вне цикла).

Application.ScreenUpdating = True

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

Результат:

Import Sheets Result