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. handle
s не могут передаваться между экземплярами / копиями 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