Ниже мы рассмотрим программу на Excel VBA тот импортирует листы из других файлов Excel в один файл Excel.
Загрузите Book4.xlsx, Book5.xlsx и добавьте их в "C: \ test \"
Ситуация:
Добавьте следующие строки кода к командной кнопке:
1. Сначала мы объявляем две переменные типа String, объект Worksheet и одну переменную типа Integer.
Dim directory As String, fileName As String, sheet As Worksheet, total as Integer
2. Отключите обновление экрана и отображение предупреждений.
Application.ScreenUpdating = False
Application.DisplayAlerts = False
3. Инициализируйте каталог переменных. Мы используем функцию Dir, чтобы найти первый * .xl ?? файл, хранящийся в этом каталоге.
directory = "c: \ test \"
fileName = Dir (каталог & "* .xl ??")
Примечание. Функция Dir поддерживает использование подстановочных знаков из нескольких символов (*) и одного символа (?) Для поиска всех типов файлов Excel.
4. Переменная fileName теперь содержит имя первого файла Excel, найденного в каталоге. Добавьте цикл Do While Loop.
Сделать пока имя_файла ""
Петля
Добавьте в цикл следующие строки кода (5, 6, 7 и 8).
5. Нет простого способа скопировать листы из закрытых файлов Excel. Поэтому открываем файл Excel.
Workbooks.Open (каталог и имя файла)
6. Импортируйте листы из файла Excel в import-sheet.xlsm.
Для каждого листа в книгах (имя_файла).
total = Книги ("import-sheet.xlsm"). Worksheets.count
Рабочие книги (имя файла). Рабочие листы (имя листа). Копировать _
after: = Рабочие книги ("import-sheet.xlsm"). Рабочие листы (всего)
Следующий лист
Объяснение: переменная total отслеживает общее количество рабочих листов import-sheet.xlsm. Мы используем метод Copy объекта Worksheet, чтобы скопировать каждый рабочий лист и вставить его после последнего рабочего листа import-sheet.xlsm.
7. Закройте файл Excel.
Рабочие книги (имя_файла) .Закрыть
8. Функция Dir - это особая функция. Чтобы получить другие файлы Excel, вы можете снова использовать функцию Dir без аргументов.
fileName = Dir ()
Примечание. Если имена файлов больше не совпадают, функция Dir возвращает строку нулевой длины (""). В результате Excel VBA выйдет из цикла Do While.
9. Включите обновление экрана и снова отображение предупреждений (вне цикла).
Application.ScreenUpdating = True
Application.DisplayAlerts = True
10. Протестируйте программу.
Результат: