Страницы: 1
RSS
Из несколько книг в одну, макрос., проблема с кодом.
 
Добрыйд день, есть кривокод который я не пойму как добить.
Задача вытащить только определенные листы из книг а не всю целиком.

Sub GetSheets()
Path = "\\********\Pr\Documentation\Analytics\Auto\"
Filename = Dir(Path & "*.xlsm")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy after:=ThisWorkbook.Sheets(1)
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
 
Код оформите правильно кнопкой <...>, Необходим список идентификатор листов которые должны быть перемещены.
Изменено: Nordheim - 31.01.2020 10:05:59
"Все гениальное просто, а все простое гениально!!!"
 
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=104913
 
Цитата
Nordheim написал:
Код оформите правильно кнопкой  , Необходим список идентификатор листов которые должны быть перемещены
Лист - Data.
И не совсем понял на счет правильной кнопки.
 
Цитата
Chin_Chin написал:
Лист - Data.
Так зачем цикл по листам, переносите этот лист, но если наименование листа во всех файлах одинаковое, то после переноса имя нужно поменять, в противном случае может вывалится ошибка совпадения листов.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Chin_Chin написал:
И не совсем понял на счет правильной кнопки.
Код должен выглядеть так:

Код
Sub GetSheets()
     'что то тут
End Sub
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Nordheim написал:
Так зачем цикл по листам, переносите этот лист, но если наименование листа во всех файлах одинаковое, то после переноса имя нужно поменять, в противном случае может вывалится ошибка совпадения листов.


Поломок нет, но все равно я не понял как выправить код.. Я почти что полный 0 в этом пока.
 
Уберите цикл по листам. У вас переносятся все листы из книги источника.
"Все гениальное просто, а все простое гениально!!!"
 
Цитата
Chin_Chin написал:
Лист - Data
что лист Data? Вам надо перенести из всех книг только один лист?
Код
Sub GetSheets()
Path = "\\********\Pr\Documentation\Analytics\Auto\"
Filename = Dir(Path & "*.xlsm")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
ActiveWorkbook.Sheets("Data").Copy after:=ThisWorkbook.Sheets(1)
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Вместо
Код
 For Each Sheet In ActiveWorkbook.Sheets
Sheet.Copy after:=ThisWorkbook.Sheets(1)
Next Sheet

запишите так
Код
worksheets("Data").copy after:=ThisWorkbook.worksheets(1) 
"Все гениальное просто, а все простое гениально!!!"
Страницы: 1
Наверх