Всем добрый день, Тема уже заезжена, но все же в данном контексте , помогите найти решение:
Есть папка, в ней .xls файлы. Нужно в другой файл на 1 лист с ячейки A3 положить все данные (по сторкам) из первых листов всех файлов данной папки. Структура данных такая:
Папка файл 1 файл 2 .... файл n везде использовать Первый лист, и собирать данные с ячейки А3.
В приемах собирает данные на разные листы, а мне нужно все на один лист поместить. Делаю так (по аналогии с приемами), но не работает и нужно помещать на 1 лист:
' Макрос1 Макрос Dim FilesToOpen Dim x As Integer Application.ScreenUpdating = False 'отключаем обновление экрана для скорости FilesToOpen = All files "С:\Моя папка\*.xls") 'проходим по всем выбранным файлам x = 1 While x <= UBound(FilesToOpen) Set importWB = Workbooks.Open(Filename:=FilesToOpen(x)) Sheets(1).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) importWB.Close savechanges:=False x = x + 1 Wend Application.ScreenUpdating = True
Копируйте не весь лист, а только importWB.Sheets(1).usedrange и не в новый лист, а в определённую последнюю+1 ячейку столбца A (ну или в каком там столбце будет нижнее значение - нужно видеть файлы).
если в наименовании листов всех книг прослеживается система: то в коде Дмитрия имеются и такие возможности: 'Указываем имя листа 'Допустимо указывать в имени листа символы подставки ? и *. 'Если указать только * то данные будут собираться со всех листов
Sub Макрос1()
Dim FilesToOpen
Dim x As Integer
Application.ScreenUpdating = False
FilesToOpen = Array("c:\Моя папка\*.xls" ;)
x = 1
While x <= UBound(FilesToOpen)
Set importWB = Workbooks.Open(Filename:=FilesToOpen(x))
importWB.Sheets(1).UsedRange
importWB.Close savechanges:=False
x = x + 1
Wend
Application.ScreenUpdating = True
End Sub
а нельзя как-то просто взять и собрать со всех книг папки данные с первых листов, мне кажется это проще чем перечислять что-то , тем более , что наименования разные.