У меня есть макрос для загрузки определенных отчетов SAP в Excel. Моя проблема заключается в том, что если я запускаю макрос более одного раза в одном и том же сеансе SAP (в первый раз он работает нормально), я получаю ошибку времени выполнения 619, которую не могу обойти.
По какой-то причине (я думаю, это связано с тем, на какой сервер пользователь вошел), модуль SAP (RE-FX) имеет два разных варианта / GUI. Поэтому у меня есть две разные настройки для загрузки отчета в Excel в зависимости от варианта / GUI.
Я использую оператор On Error Goto для переключения между этими двумя вариантами. Ошибка времени выполнения отображается в строке после оператора Перейти к ошибке.
Как уже упоминалось, это работает нормально при первом запуске макроса (ошибка Run Time не возникает, и макрос переходит к обработчику ошибок, как и ожидалось), но при втором запуске я вижу ошибку «619» и невозможно обойти это.
Я попробовал решение в этом посте (включая Application.Wait):
Невозможно обойти ошибку 619 [выполнение SAP из VBA]
Но это не исправило это (здесь не проблема времени).
Sub Run_REISCDCF()
Dim Filepath As String
Dim ReportDate As String
Dim SapGuiAuto As Object
Dim SAPApp As Object
Dim SAPCon As Object
Dim session As Object
Filepath = ThisWorkbook.Sheets("Guide").Cells(5, 5).Text 'place to store SAP reports
'Create connection to SAP
'------------------------------------------
Set SapGuiAuto = GetObject("SAPGUI")
Set SAPApp = SapGuiAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0)
Set session = SAPCon.Children(0)
'------------------------------------------
'Removed some code to run the report and change layout (which works fine)
'Save to Excel
session.findById("wnd[0]/usr/subSUB_AREA_ROOT:SAPLREIS_GUI_CONTROLLER:0200/subSUB_AREA:SAPLREIS_GUI_CONTROLLER:1000/cntlCC_LIST/shellcont/shell").pressToolbarContextButton "&MB_EXPORT"
session.findById("wnd[0]/usr/subSUB_AREA_ROOT:SAPLREIS_GUI_CONTROLLER:0200/subSUB_AREA:SAPLREIS_GUI_CONTROLLER:1000/cntlCC_LIST/shellcont/shell").selectContextMenuItem "&XXL"
On Error GoTo XLSX_variant 'SAP has two different GUI's for RE-FX with one of them only allowing to download to a MHTML file type
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = "Filepath" '<-- At this line the Run Time error appears
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "REISCDCF.MHTML"
session.findById("wnd[1]/tbar[0]/btn[11]").press
Exit Sub
XLSX_variant:
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[1]/usr/ctxtDY_PATH").Text = "Filepath"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "REISCDCF.XLSX"
session.findById("wnd[1]/tbar[0]/btn[11]").press
Exit Sub