Всем добрый день. Сделал один файл для сбора данных из закрытого файла. Макрос найден и подправлен под себя на просторах интернета.Который вытягивает данные из закрытых файлов. Как бы все устраивает. Есть еще теперь проблема вытянуть/скопировать данные с этих листов (название может измениться в дальнейшем сейчас названия временные) в сводный лист из которого наверное все де паверкверти будут тянуться данные. Макрос который у меня есть, собирает данные вставляет в лист "Zvit" не корректно. Потому как данных может быть по 100 -200 и более строк. Он же вытягивает их не все заполненные строки да еще и кусок таблицы дорисовывает... Помогите дописать макрос что бы он : Вытягивал все данные с каждого листа поочередно Когда вытягивал снова, то дописывал новые данные а не заменял их. Данные вставлял начиная с 5 строки ( пожалуйста напишите коментарии в макросе, что бы я разобрался хоть немного) Что бы при добавлении еще каких либо листов, макрос не считывал с них данные, так как файл будет расти дальше. Спасибо.
Всем добрый день. Сделал один файл для сбора данных из закрытого файла. Макрос найден и подправлен под себя на просторах интернета.Который вытягивает данные из закрытых файлов. Как бы все устраивает. Есть еще теперь проблема вытянуть/скопировать данные с этих листов (название может измениться в дальнейшем сейчас названия временные) в сводный лист из которого наверное все де паверкверти будут тянуться данные. Макрос который у меня есть, собирает данные вставляет в лист "Zvit" не корректно. Потому как данных может быть по 100 -200 и более строк. Он же вытягивает их не все заполненные строки да еще и кусок таблицы дорисовывает... Помогите дописать макрос что бы он : Вытягивал все данные с каждого листа поочередно Когда вытягивал снова, то дописывал новые данные а не заменял их. Данные вставлял начиная с 5 строки ( пожалуйста напишите коментарии в макросе, что бы я разобрался хоть немного) Что бы при добавлении еще каких либо листов, макрос не считывал с них данные, так как файл будет расти дальше. Спасибо.Santtic
Макрос который у меня есть, собирает данные вставляет в лист "Zvit" не корректно
Потому что у вас есть скрытые листы в книге и макрос при цикле по листам переносит данные и из скрытых листов. На листе Zvit сделайте шапку, аналогичную остальным листам.
Sub Sbor11() Dim Sht As Worksheet Dim iLastRow AsLong Dim iLR AsLong
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Range("A10:K" & iLastRow).EntireRow.Clear '.Delete 'Clear For Each Sht In Worksheets If Sht.Name <> "Zvit"AndNot Sht.Visible = xlSheetHidden Then With Sht
iLR = .Cells(.Rows.Count, 5).End(xlUp).Row
iLastRow = Cells(Rows.Count, 5).End(xlUp).Row + 1'+ If iLastRow < 5Then iLastRow = 5
.Range(.Cells(5, "a"), .Cells(iLR, "q")).Copy Cells(iLastRow, 1) EndWith EndIf Next EndSub
Цитата
Макрос который у меня есть, собирает данные вставляет в лист "Zvit" не корректно
Потому что у вас есть скрытые листы в книге и макрос при цикле по листам переносит данные и из скрытых листов. На листе Zvit сделайте шапку, аналогичную остальным листам.
Sub Sbor11() Dim Sht As Worksheet Dim iLastRow AsLong Dim iLR AsLong
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row 'Range("A10:K" & iLastRow).EntireRow.Clear '.Delete 'Clear For Each Sht In Worksheets If Sht.Name <> "Zvit"AndNot Sht.Visible = xlSheetHidden Then With Sht
iLR = .Cells(.Rows.Count, 5).End(xlUp).Row
iLastRow = Cells(Rows.Count, 5).End(xlUp).Row + 1'+ If iLastRow < 5Then iLastRow = 5
.Range(.Cells(5, "a"), .Cells(iLR, "q")).Copy Cells(iLastRow, 1) EndWith EndIf Next EndSub
Забыл о нем, он мне служит для формирования уникальных значений. Спасибо, макрос работает супер. Скажите пожалуйста, как прописать что бы макрос искал только на этих листах, т.е. в файл будут добавляться и не скрытые файлы. В нем будут вести учет, поэтому из этой таблицы сформируется минимум 15 таблиц. Каким образом это будет сделано,формулы, паверкверти, еще не знаем, но листы будут и не желательно чтобы с новых листов тянулась информация. Кажись решил "проблему" с помощью дописи кода
If Sht.Name <> "Zvit"And Sht.Name = "ПВТР"Or Sht.Name = "Красноградський"Or Sht.Name = "Шебелинське"Or Sht.Name = "Стрійське"AndNot Sht.Visible = xlSheetHidden Then
Протестировал, при условии, что если не на всех листах есть информация, макрос выпадает в ошибку. Странно
Забыл о нем, он мне служит для формирования уникальных значений. Спасибо, макрос работает супер. Скажите пожалуйста, как прописать что бы макрос искал только на этих листах, т.е. в файл будут добавляться и не скрытые файлы. В нем будут вести учет, поэтому из этой таблицы сформируется минимум 15 таблиц. Каким образом это будет сделано,формулы, паверкверти, еще не знаем, но листы будут и не желательно чтобы с новых листов тянулась информация. Кажись решил "проблему" с помощью дописи кода
If Sht.Name <> "Zvit"And Sht.Name = "ПВТР"Or Sht.Name = "Красноградський"Or Sht.Name = "Шебелинське"Or Sht.Name = "Стрійське"AndNot Sht.Visible = xlSheetHidden Then
Протестировал, при условии, что если не на всех листах есть информация, макрос выпадает в ошибку. СтранноSanttic
Сообщение отредактировал Santtic - Суббота, 14.03.2020, 11:45
Понял, сейчас и ваш опробую вариант. RAN, спасибо за помощь. Скажите пожалуйста, почему макрос выпает в ошибку. когда один из листов пуст. Он копирует только шапку этой таблицы а далее не идет по листам.
Понял, сейчас и ваш опробую вариант. RAN, спасибо за помощь. Скажите пожалуйста, почему макрос выпает в ошибку. когда один из листов пуст. Он копирует только шапку этой таблицы а далее не идет по листам.Santtic
Супер, все заработало, всем благодарен за помощь. Теперь наша единственная женщина сможет легче собирать данные. Спасибо за помощь. Подскажите, а проверка это
Супер, все заработало, всем благодарен за помощь. Теперь наша единственная женщина сможет легче собирать данные. Спасибо за помощь. Подскажите, а проверка это
Sub Sbor12() Dim Sht As Worksheet Dim iLastRow AsLong Dim iLR AsLong Dim i AsLong Dim ShtName
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row If iLastRow < 5Then iLastRow = 5
Range("A5:Q" & iLastRow).EntireRow.Clear '.Delete 'Clear
ShtName = Array("ПВТР", "Красноградський", "Шебелинське", "Стрійське") For i = LBound(ShtName) ToUBound(ShtName) With Worksheets(ShtName(i)) If .Visible Then
iLR = .Cells(.Rows.Count, 5).End(xlUp).Row If iLR >= 5Then
iLastRow = Sheets("Zvit").Cells(Sheets("Zvit").Rows.Count, 5).End(xlUp).Row + 1'+ If iLastRow < 5Then iLastRow = 5
.Range(.Cells(5, "a"), .Cells(iLR, "q")).Copy Sheets("Zvit").Cells(iLastRow, 1) EndIf EndIf EndWith Next EndSub
Цитата
Не могу собрать ваш вариант
Sub Sbor12() Dim Sht As Worksheet Dim iLastRow AsLong Dim iLR AsLong Dim i AsLong Dim ShtName
iLastRow = Cells(Rows.Count, 2).End(xlUp).Row If iLastRow < 5Then iLastRow = 5
Range("A5:Q" & iLastRow).EntireRow.Clear '.Delete 'Clear
ShtName = Array("ПВТР", "Красноградський", "Шебелинське", "Стрійське") For i = LBound(ShtName) ToUBound(ShtName) With Worksheets(ShtName(i)) If .Visible Then
iLR = .Cells(.Rows.Count, 5).End(xlUp).Row If iLR >= 5Then
iLastRow = Sheets("Zvit").Cells(Sheets("Zvit").Rows.Count, 5).End(xlUp).Row + 1'+ If iLastRow < 5Then iLastRow = 5
.Range(.Cells(5, "a"), .Cells(iLR, "q")).Copy Sheets("Zvit").Cells(iLastRow, 1) EndIf EndIf EndWith Next EndSub