2017-07-19 61 views
0

我正在嘗試創建一個執行SAP GUI腳本的Excel宏。我已經創建了SAP腳本,但我不明白如何在VBA宏中使用它。如何從Excel宏運行SAP GUI腳本

這是我的SAP GUI腳本: -

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 

我對此並不懷疑:

  1. 我如何在Excel宏添加此。
  2. 運行之前需要手動打開SAP嗎?
  3. 我是否需要使用任何附加代碼從Excel宏中打開SAP?

我只需要點擊按鈕來執行該過程。我沒有動態傳遞任何值。

回答

0

不幸的是,由於更換作業,我不再訪問任何SAP應用程序,所以下面是我記得的。

  • 您可以通過複製並粘貼到Sub將其添加到Excel宏。

  • 您將需要手動打開SAP以及保持計算機解鎖,否則您的宏將崩潰。有可能通過宏打開SAP,我在上一份工作中完成了它,並使用硬編碼密碼登錄到該文件,但我沒有要共享的代碼。

  • 在粘貼的腳本,用別的東西代替的application每個實例,如guiApplication,否則Excel將感到困惑與自己Excel.Application成員。

  • 不需要其他代碼,但需要調用Sub例程並確保您沒有設置option explicit。你可以,但是,那麼你將需要實例sessionconnection

如果把腳本:

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