Создание сценария VBA для запуска GUI записи сценария из SAP - PullRequest
0 голосов
/ 01 марта 2020

Я смотрел на другие примеры, но я безнадежно потерян. Я записал скрипт в SAP. Теперь мне просто нужно запустить в Excel, как есть. Сценарий, который я записал ниже. Как мне начать и закончить код?

If Not IsObject(application) Then
   Set SapGuiAuto  = GetObject("SAPGUI")
   Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
   Set connection = application.Children(0)
End If
If Not IsObject(session) Then
   Set session    = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,     "on"
   WScript.ConnectObject application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").selectedNode =             "F00010"
session.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").doubleClickNode     "F00010"
session.findById("wnd[0]/tbar[1]/btn[17]").press
session.findById("wnd[1]/tbar[0]/btn[8]").press
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").selectedRows = "0"
session.findById("wnd[1]/usr/cntlALV_CONTAINER_1/shellcont/shell").doubleClickCurrentCell
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[0]/tbar[1]/btn[8]").press
session.findById("wnd[1]/usr/ctxtDY_PATH").text = "C:\TEMP\"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").text = "BC.XLSX"
session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 7
session.findById("wnd[1]/tbar[0]/btn[0]").press

1 Ответ

0 голосов
/ 04 марта 2020

Основной вопрос c заключается в следующем: какую выгоду вы получите, запустив этот скрипт в Excel. Ваш сценарий не включает доступ к каким-либо данным Excel. Результат идентичен, будь то сценарий VB или программа VBA. Если вы действительно хотите запустить его как VBA, протестируйте следующее.

например:

Sub Test()
Set SapGuiAuto  = GetObject("SAPGUI")
Set SAPapplication = SapGuiAuto.GetScriptingEngine
Set connection = SAPapplication.Children(0)
Set session    = connection.Children(0)
session.findById("wnd[0]").maximize
...
session.findById("wnd[1]/tbar[0]/btn[0]").press
End Sub

С уважением, ScriptMan

...