excel 使用VBA按下时,SAP GUI导出的上下文菜单不显示

46qrfjad  于 2023-03-24  发布在  其他
关注(0)|答案(2)|浏览(204)

在运行我的VBA代码时,它打开了所有正确的功能,但当涉及到利用导出功能时-当用VBA按导出按钮时,下拉菜单不可用,而当用鼠标单击导出按钮时,下拉菜单出现。

由于它无法选择上下文菜单项-鉴于下拉菜单不出现-它给出了以下错误:
运行时错误“619”:无法按ID找到控件。
有没有办法让导出按钮出现上下文菜单?

Sub SAPconn()

Shell "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\saplogon.exe", 4
Set WshShell = CreateObject("WScript.Shell")
Do Until WshShell.AppActivate("SAP Logon ")
    Application.Wait Now + TimeValue("0:00:01")
Loop 'keeps looping the wait time until SAP is successfully opened

Set WshShell = Nothing

   Set SapGuiAuto = GetObject("SAPGUI") 'open SAP 
   Set app = SapGuiAuto.GetScriptingEngine 'use the VBScripting ability in SAP
      Set connection = app.Openconnection("Production", True) 'open the specific SAP connection
         Set session = connection.Children(0) 

ThisWorkbook.Activate 'ensure we are getting the information from this specific workbook for the next portion of code

With session
.findById("wnd[0]/usr/txtRSYST-BNAME").Text = Range("c2").Formula 'username
.findById("wnd[0]/usr/pwdRSYST-BCODE").Text = Range("c3").Value 'password
.findById("wnd[0]/usr/txtRSYST-LANGU").Text = "EN" 'language

.findById("wnd[0]").maximize
.findById("wnd[0]").sendVKey 0 'ENTER to log in 

end with
  
On Error GoTo 0
With session

.findById("wnd[0]").maximize
.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").expandNode "Root"
.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").expandNode "0000000007"
.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").expandNode "0000000039"
.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").expandNode "0000000040"
.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").selectedNode = "0000000041"
.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").topNode = "F00007"
.findById("wnd[0]/usr/cntlIMAGE_CONTAINER/shellcont/shell/shellcont[0]/shell").doubleClickNode "0000000041"
.findById("wnd[0]/usr/cmbP_ZINPST").key = "F"
.findById("wnd[0]/usr/cmbP_ZINPST").setFocus
.findById("wnd[0]/tbar[1]/btn[8]").press
.findById("wnd[0]").maximize

.findById("wnd[0]").maximize

.findById("wnd[0]/usr/cntlCONT1/shellcont/shell").PressToolbarContextButton ("&MB_EXPORT")
.findById("wnd[0]/usr/cntlCONT1/shellcont/shell").selectContextMenuItem "&XXL"
.findById("wnd[0]").sendVKey 0
End With
End Sub

这段视频中展示了代码的示例:video
我已在SAP GUI中启用脚本。我已在Excel宏信任设置中激活对VBA项目对象模型的信任访问。

pbossiut

pbossiut1#

谢谢你@storax的帮助,确定这可能是一个SAPGUI设置错误,这使我开始寻找工具箱选择的解决方案。

“运行时错误'619':无法按ID找到控件。”
因为上下文菜单项没有打开以便被找到。

with session
    .findById("wnd[0]/usr/cntlCONT1/shellcont/shell").PressToolbarContextButton ("&MB_EXPORT")
    .findById("wnd[0]/usr/cntlCONT1/shellcont/shell").selectContextMenuItem "&XXL"
    Application.Wait Now + TimeValue("0:00:03")
    .findById("wnd[0]").sendVKey
    end with

等待时间为SAP gui系统提供了打开所需的时间。

nxagd54h

nxagd54h2#

您需要手动打开上下文菜单
尝试使用

' session.findById("wnd[0]/usr/cntlCONT1/shellcont/shell").contextMenu '

在尝试选择上下文菜单项之前打开上下文菜单。
这应该使它这样的上下文菜单出现

相关问题