Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Определить последнюю заполненную строку из документа - Мир MS Excel

  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_, DrMini  
Определить последнюю заполненную строку из документа
ant6729 Дата: Вторник, 30.01.2018, 03:49 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Добрый вечер
Хочу получить 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]

Подскажите, пожалуйста.


Сообщение отредактировал ant6729 - Вторник, 30.01.2018, 03:50
 
Ответить
СообщениеДобрый вечер
Хочу получить 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]

Подскажите, пожалуйста.

Автор - ant6729
Дата добавления - 30.01.2018 в 03:49
Karataev Дата: Вторник, 30.01.2018, 08:05 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
Все правильно Вы делаете. Только количество строк логичнее брать из соответствующего листа, я поставил точку перед "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
Дата добавления - 30.01.2018 в 08:05
Апострофф Дата: Вторник, 30.01.2018, 08:13 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 468
Репутация: 129 ±
Замечаний: 0% ±

Excel 1997
ant6729, выполни вот этот макрос по шагам (F8)
[vba]
Код
Sub ComFortReport2()

Dim wb_ As Workbook
Application.ScreenUpdating =TRUE '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]Возможно, озарение снизойдёт...
 
Ответить
Сообщениеant6729, выполни вот этот макрос по шагам (F8)
[vba]
Код
Sub ComFortReport2()

Dim wb_ As Workbook
Application.ScreenUpdating =TRUE '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]Возможно, озарение снизойдёт...

Автор - Апострофф
Дата добавления - 30.01.2018 в 08:13
Pelena Дата: Вторник, 30.01.2018, 09:48 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
количество строк логичнее брать из соответствующего листа

Насколько это принципиально? Извиняюсь за дилетантский вопрос.
Количество строк ведь одинаковое на всех листах в пределах книги. Или я что-то упускаю?


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
количество строк логичнее брать из соответствующего листа

Насколько это принципиально? Извиняюсь за дилетантский вопрос.
Количество строк ведь одинаковое на всех листах в пределах книги. Или я что-то упускаю?

Автор - Pelena
Дата добавления - 30.01.2018 в 09:48
Karataev Дата: Вторник, 30.01.2018, 09:51 | Сообщение № 5
Группа: Проверенные
Ранг: Старожил
Сообщений: 1342
Репутация: 535 ±
Замечаний: 0% ±

Excel
Pelena, если число строк одинаково в двух листах, файлах, то да, никакой ошибки нет. Просто если мы ищем последнюю строку на каком-то листе, то логичнее и брать количество строк с этого листа.
Но нужно помнить, что еще широко используются xls-файлы, поэтому возможна ошибка, если на одном листе 1 млн. строк, а на другом 65 тысяч.
 
Ответить
СообщениеPelena, если число строк одинаково в двух листах, файлах, то да, никакой ошибки нет. Просто если мы ищем последнюю строку на каком-то листе, то логичнее и брать количество строк с этого листа.
Но нужно помнить, что еще широко используются xls-файлы, поэтому возможна ошибка, если на одном листе 1 млн. строк, а на другом 65 тысяч.

Автор - Karataev
Дата добавления - 30.01.2018 в 09:51
Pelena Дата: Вторник, 30.01.2018, 09:53 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 19603
Репутация: 4660 ±
Замечаний: ±

Excel 365 & Mac Excel
Я поняла, спасибо


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЯ поняла, спасибо

Автор - Pelena
Дата добавления - 30.01.2018 в 09:53
ant6729 Дата: Среда, 31.01.2018, 19:51 | Сообщение № 7
Группа: Проверенные
Ранг: Ветеран
Сообщений: 533
Репутация: 2 ±
Замечаний: 40% ±

Excel 2010
Сидишь такой и думаешь... блин... точка... всего лишь точка.! А умирал минут 30...
Спасибо!)
 
Ответить
СообщениеСидишь такой и думаешь... блин... точка... всего лишь точка.! А умирал минут 30...
Спасибо!)

Автор - ant6729
Дата добавления - 31.01.2018 в 19:51
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2026 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!