|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.06.2012, 15:19 | #1 |
Регистрация: 02.06.2012
Сообщений: 8
|
Объединение книг и листов по имени листа
Всем привет. По долгу работы столкнулся с ситуацией, когда нужно переносить данные с разных книг в один файл для последующей обработки. На форуме просмотрел темы, но именно того что мне нужно не нашел, а необходимо следующее:
Постановка задачи: Имеется ряд файлов в одной папке с различным расширением ( *.xls и *.xlsx) Большинство файлов имеют одинаковую структуру, в том числе названия листов. Необходимо скопировать все листы с указанным именем в одну книгу, причем скопированные листы переименовать в соответствии с именем исходного файла из которого они были вытянуты. Прошерстив частично форум нашел хороший макрос, но он не совсем мне подходит, т.к. вытягивает данные с разных листов в один. Вот он: Option Explicit Sub Consolidated_Range_of_Books_and_She ets() Dim iPivotRange As Range, iDestinationRange As Range, iBeginRange As Range, Sheet Dim iRngAddress As String, oAwb As String, DataSheet As String, _ iCopyAddress As String, sSheetName As String, oFile Dim lLastrow As Long, lLastRowMyBook As Long Dim iLastColumn As Integer Dim Str() As String ThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count) DataSheet = ThisWorkbook.ActiveSheet.Name On Error Resume Next Set iBeginRange = Application.InputBox("Выберите диапазон сбора данных." & vbCrLf & _ "1. При выборе только одной ячейки данные будут собраны со всех листов начиная с этой ячейки. " & _ vbCrLf & "2. При выделении нескольких ячеек данные будут собраны только с указанного диапазона всех листов.", Type:=8) If iBeginRange Is Nothing Then Exit Sub sSheetName = InputBox("Введите имя листа, с которого собирать данные(если не указан, то данные собираются со всех листов)", "Параметр") If sSheetName = "" Then sSheetName = "*" On Error GoTo 0 With Application.FileDialog(msoFileDialo gFilePicker) .AllowMultiSelect = True .InitialFileName = "*.*" .Title = "Выберите файлы" If .Show = False Then Exit Sub For Each oFile In .SelectedItems Workbooks.OpenText Filename:=oFile oAwb = Dir(oFile, vbDirectory) Application.ScreenUpdating = False Workbooks(oAwb).Activate For Each Sheet In Sheets If Sheet.Name Like sSheetName Then Sheet.Activate Select Case iBeginRange.Count Case 1 lLastrow = Cells(1, 1).SpecialCells(xlLastCell).Row iLastColumn = Cells.SpecialCells(xlLastCell).Colu mn iCopyAddress = Range(Cells(iBeginRange.Row, iBeginRange.Column), Cells(lLastrow, iLastColumn)).Address Case Else iCopyAddress = iBeginRange.Address lLastrow = iBeginRange.Rows.Count iLastColumn = iBeginRange.Columns.Count End Select lLastRowMyBook = ThisWorkbook.Sheets(DataSheet).Cell s.SpecialCells(xlLastCell).Row + 1 iRngAddress = Range(Cells(lLastRowMyBook, 1), Cells(lLastRowMyBook + lLastrow, iLastColumn)).Address Sheet.Range(iCopyAddress).Copy Destination:=ThisWorkbook.Sheets(Da taSheet).Range(iRngAddress) End If Next Sheet Workbooks(oAwb).Close False Next oFile End With Application.ScreenUpdating = True End Sub Скорее всего кто-то уже решал такую задачу. Просьба поделиться макросом) |
02.06.2012, 17:18 | #2 |
Форумчанин
Регистрация: 25.02.2012
Сообщений: 166
|
|
02.06.2012, 22:08 | #3 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
попробуйте такой код:
Код:
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
03.06.2012, 11:15 | #4 |
Регистрация: 02.06.2012
Сообщений: 8
|
|
03.06.2012, 11:19 | #5 | |
Регистрация: 02.06.2012
Сообщений: 8
|
Цитата:
|
|
03.06.2012, 13:46 | #6 | |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Цитата:
Код:
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
|
03.06.2012, 15:35 | #7 | |
Регистрация: 02.06.2012
Сообщений: 8
|
Цитата:
Последний раз редактировалось K_Auditor; 03.06.2012 в 15:43. |
|
03.06.2012, 17:08 | #8 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Мой сайт в подписи, раздел Что умеет Excel. Там можно найти статьи по основам программирования в Excel. Так же на сайте есть книги. Еще загляните на PlanetaExcel.ru - там много полезных статей. Чаще общайтесь на форумах, решая задачи, как свои так и чужие. Так быстрее всего научитесь.
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
08.06.2012, 20:49 | #9 | |
Регистрация: 02.06.2012
Сообщений: 8
|
Цитата:
|
|
08.06.2012, 22:03 | #10 |
Участник клуба
Регистрация: 17.07.2009
Сообщений: 1,088
|
Можно ли хоть как-то увидеть куда Вы "провалиться" не можете?
WebMoney - R298726502453; Яндекс.Деньги - 41001332272872
www.excel-vba.ru |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Объединение книг и листов по имени листа | MaxxVer | Microsoft Office Excel | 8 | 14.01.2011 13:09 |
Объединение книг и некоторых листов ? | vovik07 | Microsoft Office Excel | 5 | 20.05.2010 11:52 |
Объединение книг | demax | Microsoft Office Excel | 7 | 26.01.2010 17:25 |
Объединение нескольких книг | clop1000 | Microsoft Office Excel | 1 | 30.11.2009 09:10 |
копирование листов из закрытых книг | mephist | Microsoft Office Excel | 4 | 10.07.2009 17:18 |