При работе в BluePrism у меня возникает проблема с запуском макроса Excel, который открывает другую книгу.
Подпрограмма Excel-VBA
У меня есть Sub
в книге Excel с включенным макросом \\myCompany\myFolder\myMasterbook.xlsm
, которая открывает другую книгу
Public Sub OpenMyFile(Optional book2open As String = "")
Dim openedBook As Workbook
Debug.Print "About to open", book2open
Set openedBook = Application.Workbooks.Open(book2open)
If openedBook Is Nothing Then
Debug.Print "Could not open it"
Else
Debug.Print "I found", openedBook.Worksheets(1).Cells(1, 1).Value
' Actually, I do a lot more with that workbook, of course
openedBook.Close
End If
End Sub
Когда в окне Immidiate (которое вы открываете с помощью Ctrl-G
) я ввожу
call OpenMyFile ("\\myCompany\myFolder\myWorkbook.xlsx")
Я вижу, как книга открывается и закрывается, и получаю ответ в окне "Немедленное"
About to open \\myCompany\myFolder\myWorkbook.xlsx
I found Cell A1 content
Вызов VBA из BluePrism
В процессе роботизированной автоматизации (RPA) с использованием BluePrism мне нужно открыть книгу, содержащую этот VBA Sub
, и запустить его. В окне Immidiate теперь я получаю
About to open \\myCompany\myFolder\myWorkbook.xlsx
Could not open it
Я попробовал две вещи, чтобы решить эту проблему
Звоните без аргументов
Если я определю свой Sub
в VBA как
Public Sub OpenMyFile(Optional book2open As String = "\\myCompany\myFolder\myWorkbook.xlsx")
и вызовите его с помощью OpenMyFile
, но это не решит мою проблему, так как мне нужно передать book2open
в VBA.
Сделайте параметр обязательным
Если я определяю свой Sub
в VBA как Public Sub OpenMyFile(book2open As String')
, я получаю следующую ошибку: `Internal: Не удалось выполнить этап кода, потому что на этапе кода возникло исключение: невозможно запустить макрос
'OpenMyFile ("C: \ Users \ P01549 \ Documents \ TestHorsten.xlsx", -1)'. Макрос может быть недоступен в этой книге или все макросы могут быть отключены.
Объект MS Excel VBO - Extended
использует взаимодействие
Часть кода dot.net можно найти в BluePrisms Object Studio. Я запускаю следующие «Действия» этого объекта
Создать экземпляр
Dim excel as Object = CreateObject("Excel.Application")
' Create a GUID with which we can kill the instance later
' if we have to play hardball to get rid of it.
excel.Caption = System.Guid.NewGuid().ToString().ToUpper()
handle = GetHandle(excel)
Открыть книгу
Dim wb as Object = GetInstance(handle).Workbooks.Open(filename)
name = wb.Name
wb.Activate()
С участием
handle
: дескриптор, возвращаемый функцией Create Instancefilename
:\\myCompany\myFolder\myMasterbook.xlsm
Запустить макрос
GetInstance(Handle).Run(Macro_Name)
С участием
handle
: дескриптор, возвращаемый функцией Create InstanceMacro_Name
:OpenMyFile("\\myCompany\myFolder\myWorkbook.xlsx")
У кого-нибудь есть объяснение или обходной путь?
MsgBox "Something"
, чтобы обеспечить доступ к нему из C #. - person Vityata   schedule 13.02.2019GetInstance(Handle).Run(Macro_Name)
- person Dirk Horsten   schedule 13.02.2019book2open
при попытке открытия из Голубой призмы? - person Zac   schedule 13.02.2019"OpenMyFile(""\\myCompany\myFolder\myWorkbook.xlsx"")"
, чтобы пройтиOpenMyFile("\\myCompany\myFolder\myWorkbook.xlsx")
. Вот что я делаю. - person Dirk Horsten   schedule 19.02.2019