微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决无法使用脚本访问 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 举报,一经查实,本站将立刻删除。