RPA BluePrism Excel VBO Extended - PullRequest
       12

RPA BluePrism Excel VBO Extended

0 голосов
/ 31 января 2019

Я пытаюсь создать 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 ]

0 голосов
/ 31 января 2019

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

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

0 голосов
/ 31 января 2019

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

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

Parameters used

...