RPA BluePrism Excel VBO Extended

Я пытаюсь создать действие Excel VBO в BluePrism, которое может найти текст в Excel и вернуть значение ячейки

Dim excel as Object = GetInstance(handle)
Dim strText as String = Text
Dim ws as Object
ws = GetWorksheet( _
     handle, workbook_name, worksheet_name, False)
Dim r as Object
r = ws.Range("1:1")
r.Activate()
Dim cell as Object = excel.ActiveCell
Dim s as Object
s = ws.Cells.Find(What:=[Text], After:=cell, _
Lookin:="xlWhole", SearchOrder:="xlByColumns", SearchDirection:="xlNext", _
MatchCase:=False, SearchFormat:=False)
s.Activate()
cellref = ws.ActiveCell.Address(False,False)

Это не сработает при поиске функции с несоответствием индекса ошибки. Я не уверен, что здесь происходит не так

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

Есть ли способ сделать это с помощью существующих VBO? Если нет, может ли кто-нибудь помочь мне написать VBO, чтобы найти текст в Excel?

2 ответа

Если GetHandle() не удается, это означает, что экземпляр Excel, описанный handle ценность, которую вы передаете, не существует.

Либо используйте тот же экземпляр Excel VBO для запуска экземпляра MS Excel, либо присоедините к существующему и получите отдельный handle Значение для нового VBO. handles не могут передаваться между экземплярами / копиями VBO.

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

dim nLookin as long
if LookIn = "xlFormulas" then
    nLookIn = -4123
elseif LookIn = "xlValues" then
    nLookIn = -4163
elseif LookIn = "xlComments" then
    nLookIn = -4144 
else
    Throw New System.Exception("Incorrect parameter passed for LookIn")
end if

dim nLookAt as long
if LookAt = "xlPart" then
    nLookAt = 2
elseif LookAt = "xlWhole" then
    nLookAt = 1
else
    Throw New System.Exception("Incorrect parameter passed for LookAt")
end if

dim nSearchDirection as long
if SearchDirection = "xlNext" then
    nSearchDirection = 1
elseif SearchDirection = "xlPrevious" then
    nSearchDirection = 2
else
    Throw New System.Exception("Incorrect parameter passed for SearchDirection")
end if

dim oWS as object
dim oResult as object
oWS = GetWorksheet(Handle,nWB,nWS, False)


oResult = oWS.Range(nR).Find(what:=Value, LookIn:=nLookin, MatchCase:=MatchCase, LookAt:=nLookAt, SearchDirection:=nSearchDirection)


if oResult is nothing then
    Address = "Not found"
    Column = "A"
    Row = 1
else
    Address = oResult.address
    'Convert_to_Letter(oResult.Column, Column)
    Row = oResult.Row
End If

oWS = nothing
oResult = nothing

h ttps://stackru.com/images/4417651c83e4f5ae11446ae2b0964a805e49b715.png

Другие вопросы по тегам