Страницы: 1
RSS
Как быстро собрать данные из многих файлов в один?
 
Всем привет! У меня такая задача: есть много файлов (465) в каждом файле несколько строк данных (от 10 до 40), мне нужно собрать все эти данные в один файл на один лист,НО! что бы данные из каждого следующего файла становились ПОД (снизу) от данных из предыдущего...Проблема в том что я не знаю сколько строк в каком файле. Возможно это сделать при помощи макроса? Помогите пожалуйста, кто знает как это сделать?
 
очень много раз такая тема поднималась.  
 
У меня нет под рукой моих книг , я сразу куски кода бы вставил.  
 
Тебе надо найти макросы:  
 
1.Получения списка файлов . (вот нашел код Pavel55)  
Sub Макрос1()  
Dim iSourceWB As Workbook  
Dim fileToOpen 'тип не указываем  
Dim NewPrice As String  
ChDir ThisWorkbook.Path  
fileToOpen = Application.GetOpenFilename("Excel Files (*.xls), *.xls", Title:="Укажите файл")  
If fileToOpen = False Then  
MsgBox "Вы не указали файл для открытия!", vbExclamation, "Ошибка"  
Exit Sub  
End If  
Set iSourceWB = Workbooks.Open(Filename:=fileToOpen, UpdateLinks:=False, ReadOnly:=False)  
NewPrice = iSourceWB.Name  
MsgBox "Вы выбрали файл: " & NewPrice, , "Файл"  
End Sub  
 
 
2. найти последнюю строку :  
http://www.planetaexcel.ru/forum.php?thread_id=5334  
 
скомбинировать и вуаля :)
 
The_Prist  
Код не сработал..Вылетел с ошибкой и подсветилась строка:  
lLastRowMyBook = ThisWorkbook.Worksheets(4).Cells(1, 1).SpecialCells(xlLastCell).Row  
 
И еще одна деталь, как мне перед каждой новой вставкой вставлять первые 10 символов из того файла откуда эти данные берутся?
 
{quote}{login=SV}{date=28.02.2009 12:09}{thema=}{post}The_Prist  
Код не сработал..Вылетел с ошибкой и подсветилась строка:  
lLastRowMyBook = ThisWorkbook.Worksheets(4).Cells(1, 1).SpecialCells(xlLastCell).Row  
 
И еще одна деталь, как мне перед каждой новой вставкой вставлять первые 10 символов из того файла откуда эти данные берутся?{/post}{/quote}  
 
Я имел ввиду 10 символов из ИМЕНИ (НАЗВАНИЯ) файла?
 
Спасибо!!!  
Все, заработало, я в Worksheets(4) 4 на 3 заменил, и вроде работает, только файлы из которых берет данные не закрывает, ну и насчет названия файла помогите пожалуйста? Мне нужно его перед каждой новой вставкой вставлять.
 
Ребята, помогите пожалуйста с именем файла в этом скрипте. Как сделать что бы он вставлялся перед каждой вставкой?
 
В этом примере oAwb является перемнной, которой присваивается имя каждого обрабатываемого файла. Вот и вставляйте ее куда нужно.
 
Prist, я проверил - имена файлов вставляются в файлы-исходники. И ещё автор просил закрывать эти файлы :-)
 
И ещё: может быть нужно  
Cells(lLastRow + 1, 1).Value = oAwb  
А то затираются данные.
 
Ребятя спасибо всем огромное!  
The_Prist -особое спасибо! Вы меня сильно выручили!!!
 
The_Prist  
Проверил я работу скрипта - имена файлов не вставляет вообще, а содержимое вставляет куда то вниз на 1000 строку или за 1000. К тому же выбиватеся с ошибкой 1004 - изменить часть обединенной ячейки не возможно...  
Может можно как то доработать?
 
The_Prist  
Мне нужно что бы из 500 моих файлов все данные собрались в один файл, но при этом перед каждыми данными стояло бы имя файла из которого они взяты. А ваш скрипт вставляет все названия файлов в левый верхний угол и данные только из одного файла. В приложении в архиве находяться два файла из тех, которые мне нужно склеить, может это поможет?
 
Уважаемый The_Prist, пара вопросов. Что нужно изменить чтобы имя файла вставлялось только один раз независимо от к-ва листов в каждом файле? По какому принципу в импорте осуществляется очередность? Какой файл будет обработан первым, какой вторым?
 
Может кто-нибудь подсказать, что надо изменить, чтобы выбирать с листов строки, начиная с определенной, например с 8?
 
Может. Строку:  
Sheet.Range(Cells(1, 1), Cells(lLastRow, iLastColumn)).Copy  
Заменяем на:  
Sheet.Range(Cells(8, 1), Cells(lLastRow, iLastColumn)).Copy
Я сам - дурнее всякого примера! ...
 
{quote}{login=The_Prist}{date=12.07.2012 10:42}{thema=}{post}...chto-umeet-excel...{/post}{/quote}Дим, не совсем корректное название. Excel этого не умеет. Это умеет VBA :-)
Страницы: 1
Наверх