Перед передачей данных из прайс-листа в программу прайс-агрегатор, мне нужно их обработать по своей схеме скриптом vbs. Чтобы определить регион с занятыми данными мне нужно получить абсолютный максимальный номер строки региона, для этого использую процедуру SpecialCells(xlCellTypeLastCell), но так как лист защищен - Эксель выдает ошибку:
Пример скрипта vbs c ошибкой на строке oLastCell = oSheet.Cells.SpecialCells(xlCellTypeLastCell):
Вопрос: как по другому получить максимальный абсолютный номер строки? Архив с примером выходит больше 100 Кб (изменить файл примера не могу, защищен), если админы удалят - вот ссылка на скачивание _http://rghost.ru/7H4P4wHCM
const xlValues =-4163
const xlWhole =&H1
const xlPrevious =&H2
' Dim rF As Range
' Dim lLastRow As Long, lLastRow As Long
'ищем последнюю ячейку на листе, в которой хранится хоть какое-то значение
Set rF = oSheet.UsedRange.Find("*", , xlValues, xlWhole, xlPrevious)
If Not rF Is Nothing Then
lLastRow = 1 'последняя заполненная строка
lLastCol = 1 'последний заполненный столбец
MsgBox rF.Address 'показываем сообщение с адресом последней ячейки
Else
'если ничего не нашлось - значит лист пустой
'и можно назначить в качестве последних первую строку и столбец
lLastRow = 1
lLastCol = 1
End If
MsgBox(lLastRow)
показывает адрес $C$2. Может я использовал неправильные константы, но вроде взял их на авторитетном ресурсе.
Какие будут еще варианты?
PS Там кстати там ошибка в примере, так как при условии If Not rF Is Nothing Then присваиваются значения lLastRow = 1 и lLastCol = 1