Сборка листов из разных книг в одну
Предположим, имеется куча книг Excel, все листы из которых надо объединить в один файл. Копировать руками долго и мучительно, поэтому имеет смысл использовать несложный макрос.
Открываем книгу, куда хотим собрать листы из других файлов, входим в редактор Visual Basic сочетанием клавиш Alt+F11 одноименной кнопкой на вкладке Разработчик (Developer - Visual Basic), добавляем новый пустой модуль (в меню Insert - Module) и копируем туда текст вот такого макроса:
Sub CombineWorkbooks() Dim FilesToOpen Dim x As Integer Application.ScreenUpdating = False 'отключаем обновление экрана для скорости 'вызываем диалог выбора файлов для импорта FilesToOpen = Application.GetOpenFilename _ (FileFilter:="All files (*.*), *.*", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox "Не выбрано ни одного файла!" Exit Sub End If 'проходим по всем выбранным файлам x = 1 While x <= UBound(FilesToOpen) Set importWB = Workbooks.Open(Filename:=FilesToOpen(x)) Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) importWB.Close savechanges:=False x = x + 1 Wend Application.ScreenUpdating = True End Sub
После этого можно вернуться в Excel и запустить созданный макрос на вкладке Разработчик кнопкой Макросы (Developer - Macros) или нажав Alt+F8. Отобразится диалоговое окно открытия файла, где необходимо указать один или несколько (удерживая Ctrl или Shift) файлов, листы из которых надо добавить к текущей книге - и задача решена!
Ссылки по теме
- Что такое макросы, куда вставлять код макроса на Visual Basic
- Автоматическая сборка заданных листов из заданных книг с помощью надстройки PLEX
- Автоматическая сборка данных с нескольких листов на один итоговый лист с помощью надстройки PLEX
а csv файлы есть макрос для сборки в одну книгу?
а то ни один не работает(
спасибо
Благодарю:)
Использовала макрос, классная штука.
У меня отчетности 30 компаний, в каждом из них есть Баланс, ОПИУ И ДДС.
Мне нужно собрать только эти три листа в один файл, а остальные листы оставить.
Можете мне помочь с макросом, т.к. сама непониманию макросы.
Спасибо!!!
Воспользовалась макросом для объединения нескольких книг в одну
Sub CombineWorkbooks()
Dim FilesToOpen
Dim x As Integer
Application.ScreenUpdating = False 'отключаем обновление экрана для скорости
'вызываем диалог выбора файлов для импорта
FilesToOpen = Application.GetOpenFilename _
(FileFilter:="All files (*.*), *.*", _
MultiSelect:=True, Title:="Files to Merge";)
If TypeName(FilesToOpen) = "Boolean" Then
MsgBox "Не выбрано ни одного файла!"
Exit Sub
End If
'проходим по всем выбранным файлам
x = 1
While x <= UBound(FilesToOpen)
Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
importWB.Close savechanges:=False
x = x + 1
Wend
Application.ScreenUpdating = True
End Sub
все работает, большое спасибо)
Есть только один глупый вопрос)
Как сделать так, чтобы данные в объединенной книге обновлялись по мере внесения изменений в объединяемые книги?
Заранее благодарю!
Спасибо за Вашу работу, Николай!
Скажите, пожалуйста, как реализовать автоматическое подтягивание информации из разных книг? То есть имеется много книг и я хочу выборочно оттуда вытянуть информацию в одну книгу. Т.к. в этих книгах информация ежедневно обновляется, требуется чтобы в моей книге, при открывании тоже проходило обновление.
Заранее спасибо.
Решение нашел.
А можно преобразовать этот макрос таким образом, чтобы можно было собирать данные не с одной папки, а сразу с нескольких?
Подскажите, пожалуйста, что я нитак делаю((((
Раньше работала на Винде, и Ваши макросы на Копи-Паст прекрасно работали. Теперь на Маке, и как-то не получается, хотя у меня ощущение, что это не проблема.
Потипу
Sheets().Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.FILENAME)
Называется
Есть необходимость собирать данньіе из *.csv файлов, решение возможно? Вообще.
показывает будто ошибка в строке Sheets().Copy after:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
без надстройки макрос отлично работает, а с надстройкой выдает такую ошибку после выбора книг которые хочу объединить в одну
ну или нужен макрос печати всех листов с одинаковым колонтитулом (текст в верхнем колонтитуле у листов разный - печать привязать к этому тексту)
При использовании макроса, после выбора нужных файлов, появляется ошибка:
Run-time error '1004':
Method 'Copy' of object 'Sheets' failed
Как исправить эту ошибку? Что не так делаю?
Тоже столкнулся с вышеуказанной ошибкой.
Подскажите пожалуйста, в чем проблема, как исправить.
** На одном компьютере макрос работает, на другом появляется ошибка.
Вероятно связано с версией Excel.