1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

Поиск Из Lotus В Excel

Тема в разделе "Lotus - Программирование", создана пользователем valdymar, 13 сен 2012.

  1. valdymar

    valdymar New Member

    Репутация:
    0
    Регистрация:
    13 сен 2012
    Сообщения:
    3
    Симпатии:
    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 =, не могу разобраться почему, толи неправильно параметры передаю, толи ещё что то.
    В чём может быть причина ошибки?

    Спасибо!
     
  2. susinmn

    susinmn Well-Known Member

    Репутация:
    0
    Регистрация:
    16 окт 2007
    Сообщения:
    529
    Симпатии:
    8
    Может 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
     
  3. lmike

    lmike нет, пердело совершенство
    Lotus team

    Репутация:
    1
    Регистрация:
    27 авг 2008
    Сообщения:
    6.375
    Симпатии:
    336
  4. kutzhanov

    kutzhanov Member

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

Поделиться этой страницей