Добрый вечер Хочу получить lr из документа, из которого достаю инфо
Вот код, которым это делаю, но не могу понять, как найти lr в запрашиваемом документе
В книге активного листа как это сделать понятно.... но как найти lr в запрашиваемом документе [vba]
Код
Sub ComFortReport2()
Dim wb_ As Workbook Application.ScreenUpdating = False fp_ = "G:\2\" fn_ = Dir(fp_ & "*.xls*", vbNormal) On Error Resume Next Do While fn_ <> "" Set wb_ = GetObject(fp_ & fn_)
With wb_.Sheets("Лист1")
lr1 = Cells(Rows.Count, "A").End(xlUp).Row ' тот, который на активном листе
lr3 = .Cells(Rows.Count, "A").End(xlUp).Row ' так что-ли?) MsgBox lr3 ' Как выяснилось, не так... но как)?
.Range("A1:Q50").Copy Cells(lr1, 1) End With
wb_.Close False lr_ = Empty fn_ = Dir() Loop
End Sub
[/vba]
Подскажите, пожалуйста.
Добрый вечер Хочу получить lr из документа, из которого достаю инфо
Вот код, которым это делаю, но не могу понять, как найти lr в запрашиваемом документе
В книге активного листа как это сделать понятно.... но как найти lr в запрашиваемом документе [vba]
Код
Sub ComFortReport2()
Dim wb_ As Workbook Application.ScreenUpdating = False fp_ = "G:\2\" fn_ = Dir(fp_ & "*.xls*", vbNormal) On Error Resume Next Do While fn_ <> "" Set wb_ = GetObject(fp_ & fn_)
With wb_.Sheets("Лист1")
lr1 = Cells(Rows.Count, "A").End(xlUp).Row ' тот, который на активном листе
lr3 = .Cells(Rows.Count, "A").End(xlUp).Row ' так что-ли?) MsgBox lr3 ' Как выяснилось, не так... но как)?
Все правильно Вы делаете. Только количество строк логичнее брать из соответствующего листа, я поставил точку перед "Rows": [vba]
Код
lr3 = .Cells(.Rows.Count, "A").End(xlUp).Row ' так что-ли?)
[/vba] Может быть в открываемом файле нет листа "Лист1". Уберите эту строку (или совсем или на время): [vba]
Код
On Error Resume Next
[/vba] Возможно проявится ошибка. Бездумно не нужно использовать "On Error Resume Next". Если Вы хотите использовать "On Error Resume Next" в начале макроса, то нужно хотя бы сделать обработчик ошибок, чтобы Вы узнали, что произошла ошибка.
Все правильно Вы делаете. Только количество строк логичнее брать из соответствующего листа, я поставил точку перед "Rows": [vba]
Код
lr3 = .Cells(.Rows.Count, "A").End(xlUp).Row ' так что-ли?)
[/vba] Может быть в открываемом файле нет листа "Лист1". Уберите эту строку (или совсем или на время): [vba]
Код
On Error Resume Next
[/vba] Возможно проявится ошибка. Бездумно не нужно использовать "On Error Resume Next". Если Вы хотите использовать "On Error Resume Next" в начале макроса, то нужно хотя бы сделать обработчик ошибок, чтобы Вы узнали, что произошла ошибка.Karataev
количество строк логичнее брать из соответствующего листа
Насколько это принципиально? Извиняюсь за дилетантский вопрос. Количество строк ведь одинаковое на всех листах в пределах книги. Или я что-то упускаю?Pelena
"Черт возьми, Холмс! Но как??!!" Ю-money 41001765434816
Pelena, если число строк одинаково в двух листах, файлах, то да, никакой ошибки нет. Просто если мы ищем последнюю строку на каком-то листе, то логичнее и брать количество строк с этого листа. Но нужно помнить, что еще широко используются xls-файлы, поэтому возможна ошибка, если на одном листе 1 млн. строк, а на другом 65 тысяч.
Pelena, если число строк одинаково в двух листах, файлах, то да, никакой ошибки нет. Просто если мы ищем последнюю строку на каком-то листе, то логичнее и брать количество строк с этого листа. Но нужно помнить, что еще широко используются xls-файлы, поэтому возможна ошибка, если на одном листе 1 млн. строк, а на другом 65 тысяч.Karataev