如何使用 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 弹出的代码行之后。
我本来希望自动进行多次提取,但当我 运行 弹出的宏 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 弹出的代码行之后。