无法使用脚本访问 SAP GUI 中的“本地文件”导出

问题描述

我对 Stack Overflow 和 VBA 非常陌生,所以请原谅我的问题中的任何错误。 我们正在尝试使用脚本从 SAP GUI 界面将表下载到 .txt 文件

每当我们尝试运行代码时,都会收到错误“id 无法找到控件”。

我们试图按下的按钮

screenshot #1

我们尝试过的事情:

  1. 我们尝试使用发送密钥,但我们对此不太有信心。这将是我们最后的手段。
  2. 当我们将 FindAllByName 与“shell”一起使用时,它会点击其下方表格上的“导出”按钮

    screeenshot #2

据我所知

  1. 脚本中的数字(斜体或在代码中用**标记)不断变化。所以我们猜测 SAP 中存储的脚本编号与我们尝试运行的 excel 中存在冲突

  2. 我们尝试交互的表格只有在我们加载总和零件编号并点击“开始”时才会出现。当我们最初打开 GUI 时它不会出现。

        Public Declare Function SetForegroundWindow _
    Lib "user32" (ByVal hwnd As Long) As Long
    
    Sub SA_Dump()
    
    Dim App,Connection,session As Object
    Set SapGuiAuto = Getobject("SAPGUI")
    Dim setFocus As Long
    Set App = SapGuiAuto.GetScriptingEngine
    Set Connection = App.Children(0)
    Set session = Connection.Children(0)
    Dim wsh As Object
    Set wsh = CreateObject("WScript.Shell")
    Dim sCestaGrid As String
    
    Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).copy
    
    setFocus = session.ActiveWindow.Handle
    SetForegroundWindow setFocus
    
    Application.Wait (Now + TimeValue("0:00:05"))
    
    'Reset fields
    session.findById("wnd[0]").resizeWorkingPane 147,25,False
    session.findById("wnd[0]/usr/subSUB01:/SCF/SG/CA_110SPPDRPSB1:1005/subSUB01:/SCF/SG/CA_110SPPDRPSB1:1001/btnRESETSIMPLESEL").press
    
    'hit selection window
    session.findById("wnd[0]/usr/subSUB01:/SCF/SG/CA_110SPPDRPSB1:1005/subSUB02:/SCF/SG/CA_110SPPDRPSB1:1002/btnSGNT_0000034-MATNR_V").press
    
    'hit copy from clipboard
    session.findById("wnd[1]/tbar[0]/btn[24]").press
    
    'hit Check entries mark
    session.findById("wnd[1]/tbar[0]/btn[0]").press
    
    'hit copy button
    session.findById("wnd[1]/tbar[0]/btn[8]").press
    
    'hit Go button
    session.findById("wnd[0]/usr/subSUB01:/SCF/SG/CA_110SPPDRPSB1:1005/subSUB01:/SCF/SG/CA_110SPPDRPSB1:1001/btnBUTTON01").press
    
    'Clear clipboard to avoid pop-up at end to close Excel sheets
    Application.CutcopyMode = False
    
    'hit export (ERROR HAPPENS HERE!!!)
    session.findById("wnd[0]/usr/subSUB02:/SCF/SG/CA_110SPPDRPSB1:*2119*/subSUB03:/SCF/SG/CA_110SPPDRPSB1:*2141*/cntlCONTAINER_7/shellcont/shell").presstoolbarContextButton "&MB_EXPORT"
    session.findById("wnd[0]/usr/subSUB02:/SCF/SG/CA_110SPPDRPSB1:*2119*/subSUB03:/SCF/SG/CA_110SPPDRPSB1:*2141*/cntlCONTAINER_7/shellcont/shell").selectContextMenuItem "&PC"
    
    'hit Tick button
    session.findById("wnd[1]/tbar[0]/btn[0]").press
    
    'For rename
    session.findById("wnd[1]/usr/ctxtDY_FILENAME").Text = "Rel_mvmnt.txt"
    session.findById("wnd[1]/usr/ctxtDY_FILENAME").caretPosition = 10
    
    'Hit replace button
    session.findById("wnd[1]/tbar[0]/btn[11]").press
    
    End Sub
    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)