Импорт листов с помощью Excel VBA
Ниже мы рассмотрим программу в Excel VBA, что импорт листы из других файлов Excel в один файл Excel.
Скачать Book4.xlsx, Book5.xlsx и добавить их в «C: \ Test \»
Ситуация:
Добавьте следующие строки кода к командной кнопке:
-
Во-первых, мы объявляем две переменные типа String, объект Worksheet и одну переменную типа Integer.
Dim directory As String, fileName As String, sheet As Worksheet, total As Integer
-
Выключите обновление экрана и отображение предупреждений.
Application.ScreenUpdating = False Application.DisplayAlerts = False
-
Инициализировать переменный каталог. Мы используем функцию Dir, чтобы найти первый .XL ?? Файл хранится в этом каталоге.
directory = "c:\test\" fileName = Dir(directory & ".xl??")
Примечание: (?) Функция Dir поддерживает использование множественного характера (*) и одного символа подстановочных знаков для поиска всех различных типов файлов Excel.
-
Переменная имя_файла теперь держит имя первого файла Excel находится в каталоге. Добавить Do While Loop.
Do While fileName <> "" Loop
Добавьте следующие строки кода (при 5, 6, 7 и 8) к петле.
-
Там нет простого способа для копирования листов из закрытых файлов Excel.
Поэтому мы открываем файл Excel.
Workbooks.Open (directory & fileName)
-
Импорт листов из файла 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.
-
Закройте файл Excel.
Workbooks(fileName).Close
-
Функция Dir специальная функция. Для того, чтобы получить другие файлы Excel, вы можете использовать функцию Dir снова без аргументов.
fileName = Dir()
Примечание: Когда больше имен файлов не совпадают, то функция Dir возвращает нулевой длины строки ( «»). В результате, Excel VBA оставит делать во время цикла.
-
Включите обновление экрана и отображение предупреждений снова (вне цикла).
Application.ScreenUpdating = True Application.DisplayAlerts = True
-
Тест программы.
Результат: