• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Поиск Из Lotus В Excel

valdymar

New member
13.09.2012
3
0
BIT
0
Добрый день!
Для более оперативной организации импорта данных из книги Excel в БД Lotus решил воспользоваться функцией VBA find:

Set view = db.GetView( "viewByPersonFullName" )
Set PersonDoc = view.GetFirstDocument

Do While Not (PersonDoc Is Nothing)

tempPersonID = PersonDoc.GetItemValue("fldPersonId")(0)
'Set tempFindPerson = ExcelWorkSheet.Columns(6).Find(tempPersonID, xlValues, xlPrevious, xlByRows)
Set tempFindPerson = ExcelWorkSheet.Columns(6).Find(tempPersonID, "", -4123, 1, 1, 1, False, False)


If tempFindPerson Is Nothing Then
Call PersonDoc.ReplaceItemValue("fldPersonStatus", "Уволен")
End If

Set PersonDoc = view.GetNextDocument(PersonDoc)

Loop

Во время выполнения агента, появляется ошибка "automation object error" на строке поиска Set tempFindPerson =, не могу разобраться почему, толи неправильно параметры передаю, толи ещё что то.
В чём может быть причина ошибки?

Спасибо!
 
S

susinmn

Может Find\FindNext подойдет?

Код:
Set xlR=CreateObject("Excel.Application")
Call xlR.Workbooks.Open(filename,0,0)
Set xlRWbk = xlR.ActiveSheet	



tmpLastRow=0
tmpLastColumn=0
tmpText=Format(xlRWbk.Range("A1").Value,"0;0%") 
If Instr(tmpText,"408")>0 Then
tmpRow=1
tmpColumn=1
sus=sus+HowManyAccounts(tmpText)
xlR.Cells.Find("408").Select
Else
xlR.Cells.Find("408").Select					
tmpRow=xlR.Selection.Row
tmpColumn=xlR.Selection.Column
tmpText=Format(xlRWbk.Cells(tmpRow,tmpColumn).Value,"0;0%") 
End If

xlR.Cells.FindNext(xlR.Selection).Select
tmpRow=xlR.Selection.Row
tmpColumn=xlR.Selection.Column
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
216

и хехель не нужен ;)
 
K

kutzhanov

На будущее:
В данном случае агент выдает ошибку automation object error если искомое выражение не найдено.
Для проверки пробуем за место tempPersonID подставить к-нибудь значение, к-ое точно имеется в документе Excel, тогда функция не выдаст ошибку.
Поэтому перед функцией ставим обработчик ошибок, н-р:
on error resume next
а дальше проверка правильная.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!