簡體   English   中英

如何使用 VBA 關閉 SAP 彈出窗口?

[英]How to close SAP pop-up windows with VBA?

我本來希望自動進行幾次提取,除了當我運行宏時,我有彈出窗口讓我非常惱火,我可以通過按 Enter 使它們消失。

  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 GUI

SAP popup 沒有選擇數據

第一個彈出窗口是 SAP 告訴您腳本正在嘗試訪問 SAP。 您可以在 SAP 設置中禁用該信息。
轉到選項 -> 輔助功能和腳本 -> 腳本
然后從“腳本附加到 SAP GUI 時通知”和“腳本打開連接時通知”中刪除復選標記

在此處輸入圖片說明

可以使用以下行關閉第二個彈出窗口:

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

這將按下彈出窗口中的確定按鈕。

如果你想知道窗口是否彈出,你可以這樣做:

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

將這段代碼放在導致窗口彈出的代碼行之后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM