• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Поиск Из 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 948
609
BIT
251

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

kutzhanov

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

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