如何使用 VBA 关闭 SAP 弹出窗口 windows?

How to close SAP pop-up windows with VBA?

我本来希望自动进行多次提取,但当我 运行 弹出的宏 windows 非常烦人时,我可以通过按回车键让它们消失。

  Public Sub RunGUIScript()

 Dim W_Ret As Boolean
 Dim Société As String
 Sheets("Extraction").Select
 Société = Range("b9")


   Application.SendKeys "{Enter}" 

 ' Connect to SAP
  W_Ret = Attach_Session
  If Not W_Ret Then
  Exit Sub
   End If


    On Error GoTo myerr



  objSess.findById("wnd[0]").maximize
  objSess.findById("wnd[0]/tbar[0]/okcd").Text = "S_ALR_87012039"
  objSess.findById("wnd[0]/tbar[0]/btn[0]").press
  objSess.findById("wnd[0]/usr/radSUMMB").Select
  objSess.findById("wnd[0]/usr/chkP_GRID").Selected = True
  [...]

  Exit Sub

  myerr:
  MsgBox "Error occured while retrieving data", vbCritical + vbOKOnly


  End Sub

“Application.SendKeys“{Enter}”功能不会使我的 SAP windows 消失,所以它不是有效的解决方案

第一个弹出窗口是 SAP 告诉您,脚本正在尝试访问 SAP。您可以在 SAP 设置中禁用该信息。
转到选项 -> 辅助功能和脚本 -> 脚本
然后去掉 "Notify when a script attaches to SAP GUI" 和 "Notify when a script opens a connection"

的复选标记

第二个弹出窗口可以用这行关闭:

objSess.FindById("wnd[1]/tbar[0]/btn[0]").Press

这将按下弹出窗口中的“确定”按钮。

如果您想知道 window 是否弹出,您可以这样做:

On Error Resume Next
objSess.FindById("wnd[1]/tbar[0]/btn[0]").Press
If Err.Number = 0 Then
    'Button was pressed
End If
On Error GoTo 0

将这段代码放在导致 window 弹出的代码行之后。