2017-07-19 5 views
0

Ich versuche, ein Excel-Makro zu erstellen, das das SAP GUI Script ausführt. Ich habe bereits das SAP-Skript erstellt, aber ich habe nicht verstanden, wie man das im VBA-Makro verwendet.So führen Sie das SAP GUI-Skript aus Excel Makro

Das ist mein SAP GUI Script: -

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]/tbar[0]/okcd").text = "ZL" 
session.findById("wnd[0]").sendVKey 0 
session.findById("wnd[0]/usr/chkP_DBAGG").selected = true 
session.findById("wnd[0]/usr/ctxtP_DTA").text = "DB" 
session.findById("wnd[0]/usr/chkP_DBAGG").setFocus 
session.findById("wnd[0]/tbar[1]/btn[8]").press 
session.findById("wnd[0]/tbar[1]/btn[25]").press 
session.findById("wnd[0]/tbar[1]/btn[26]").press 
session.findById("wnd[0]/usr/chkS005").selected = true 
session.findById("wnd[0]/usr/chkS017").selected = true 
session.findById("wnd[0]/usr/chkS018").selected = true 
session.findById("wnd[0]/usr/chkS020").selected = true 
session.findById("wnd[0]/usr/chkS025").selected = true 
session.findById("wnd[0]/usr/chkS030").selected = true 
session.findById("wnd[0]/usr/chkS031").selected = true 
session.findById("wnd[0]/usr/chkS055").selected = true 
session.findById("wnd[0]/usr/chkS057").selected = true 
session.findById("wnd[0]/usr/chkS057").setFocus 
session.findById("wnd[0]/tbar[1]/btn[8]").press 
session.findById("wnd[0]/usr/ctxtC025-LOW").setFocus 
session.findById("wnd[0]/usr/ctxtC025-LOW").caretPosition = 0 
session.findById("wnd[0]").sendVKey 4 
session.findById("wnd[1]/usr/cntlCONTAINER/shellcont/shell").selectionInterval = "20170717,20170717" 
session.findById("wnd[0]/usr/ctxtC025-HIGH").setFocus 
session.findById("wnd[0]/usr/ctxtC025-HIGH").caretPosition = 0 
session.findById("wnd[0]").sendVKey 4 
session.findById("wnd[1]/usr/cntlCONTAINER/shellcont/shell").focusDate = "20170724" 
session.findById("wnd[1]/usr/cntlCONTAINER/shellcont/shell").selectionInterval = "20170724,20170724" 
session.findById("wnd[0]/usr/txtL_MX").text = "9999999" 
session.findById("wnd[0]/usr/txtL_MX").setFocus 
session.findById("wnd[0]/usr/txtL_MX").caretPosition = 11 
session.findById("wnd[0]/tbar[1]/btn[8]").press 
session.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[1]").select 
session.findById("wnd[1]/usr/ctxtDY_PATH").setFocus 
session.findById("wnd[1]/usr/ctxtDY_PATH").caretPosition = 0 
session.findById("wnd[1]").sendVKey 4 
session.findById("wnd[2]/usr/ctxtDY_PATH").setFocus 
session.findById("wnd[2]/usr/ctxtDY_PATH").caretPosition = 0 
session.findById("wnd[2]").sendVKey 4 
session.findById("wnd[3]/usr/ctxtDY_PATH").setFocus 
session.findById("wnd[3]/usr/ctxtDY_PATH").caretPosition = 0 
session.findById("wnd[3]").sendVKey 4 
session.findById("wnd[4]/usr/ctxtDY_PATH").text = "G:\PROFILES\AP\Desktop" 
session.findById("wnd[4]/usr/ctxtDY_FILENAME").text = "report.xlsx" 
session.findById("wnd[4]/usr/ctxtDY_FILENAME").caretPosition = 11 
session.findById("wnd[4]/tbar[0]/btn[11]").press 
session.findById("wnd[3]/tbar[0]/btn[11]").press 
session.findById("wnd[2]/tbar[0]/btn[0]").press 
session.findById("wnd[1]/tbar[0]/btn[11]").press 

Ich habe einige Zweifel in Bezug auf diese:

  1. Wie kann ich diese in Excel-Makro.
  2. Muss ich das SAP manuell öffnen, bevor ich es ausführe?
  3. Gibt es einen Ad-On-Code, den ich zum Öffnen des SAP-Excel-Makros verwenden muss?

Ich brauche nur klicken, um den Prozess auszuführen. Ich habe keinen Wert dynamisch übergeben.

Antwort

0

Leider habe ich aufgrund wechselnder Jobs keinen Zugriff mehr auf SAP-Anwendungen, daher ist das Folgende von dem, woran ich mich erinnere.

  • Sie können durch Kopieren und Einfügen in eine Sub diese in eine Excel-Makro hinzufügen.

  • Sie müssen SAP manuell öffnen und den Computer entsperrt lassen, sonst stürzt Ihr Makro ab. Es könnte möglich sein, SAP über das Makro zu öffnen, ich habe es in meinem letzten Job gemacht und mich mit einem hartcodierten Passwort angemeldet, aber ich habe keinen Code, den ich teilen könnte.

  • Im Skript eingefügt, jede Instanz application mit etwas anderem, wie guiApplication ersetzen, sonst wird Excel mit einem eigenen Excel.Application Mitglied verwirrt.

  • Kein anderer Code ist erforderlich, aber Sie müssen die Sub Routine aufrufen und sicherstellen, dass Sie option explicit nicht festgelegt haben. Sie können aber dann müssen Sie session instanziiert, connection usw.

Wo das Skript setzen:

Public Sub MySapScript() 
    ' Your Sap Script here 
End Sub 
Verwandte Themen