如何解决无法使用脚本访问 SAP GUI 中的“本地文件”导出
我对 Stack Overflow 和 VBA 非常陌生,所以请原谅我的问题中的任何错误。 我们正在尝试使用脚本从 SAP GUI 界面将表下载到 .txt 文件中
每当我们尝试运行代码时,都会收到错误“id 无法找到控件”。
我们试图按下的按钮
我们尝试过的事情:
- 我们尝试使用发送密钥,但我们对此不太有信心。这将是我们最后的手段。
- 当我们将 FindAllByName 与“shell”一起使用时,它会点击其下方表格上的“导出”按钮
据我所知
-
脚本中的数字(斜体或在代码中用**标记)不断变化。所以我们猜测 SAP 中存储的脚本编号与我们尝试运行的 excel 中存在冲突
-
我们尝试交互的表格只有在我们加载总和零件编号并点击“开始”时才会出现。当我们最初打开 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 举报,一经查实,本站将立刻删除。