Excel VBA检查PR SAP附件

Excel VBA检查PR SAP附件,excel,vba,shell,sap,Excel,Vba,Shell,Sap,我需要excel告诉我下面名为“附件列表”的按钮是否可以单击,但我无法获取。下面是我试过的代码- Sub teste() Set SapGuiAuto = GetObject("SAPGUI") Set SAPApplication = SapGuiAuto.GetScriptingEngine Set SAPConnection = SAPApplication.Children(0) Set session = SAPConn

我需要excel告诉我下面名为“附件列表”的按钮是否可以单击,但我无法获取。下面是我试过的代码-

Sub teste()

        Set SapGuiAuto = GetObject("SAPGUI")
        Set SAPApplication = SapGuiAuto.GetScriptingEngine
        Set SAPConnection = SAPApplication.Children(0)
        Set session = SAPConnection.Children(0)


            session.findById("wnd[0]").maximize
            session.findById("wnd[0]/tbar[0]/okcd").Text = "/nme53n"
            session.findById("wnd[0]").sendVKey 0

            session.findById("wnd[0]").sendVKey 17
            session.findById("wnd[1]/usr/subSUB0:SAPLMEGUI:0003/ctxtMEPO_SELECT-BANFN").Text = "Purchase Requisition"
            session.findById("wnd[1]/usr/subSUB0:SAPLMEGUI:0003/ctxtMEPO_SELECT-BANFN").caretPosition = 8
            session.findById("wnd[1]").sendVKey 0

        session.findById("wnd[0]/titl/shellcont/shell").pressContextButton "%GOS_TOOLBOX"
        Set botao = session.findById("/app/con[0]/ses[0]/wnd[0]/titl/shellcont/shell/")

End Sub

我将“botao”设置为从图像列表中获取所有8个按钮的数据,但没有任何属性对我有帮助

我需要这样的东西:

attach = botao.CurrentContextMenu.Children.Item(2).isfocused
代码:“botao.CurrentContextMenu.Children.Item(2)”将我引向“附件列表”按钮,但没有任何属性对我有帮助


真的需要帮助。

在我的测试中附带了一个不存在的附件,下面有一条消息

如果您不是这样,您可以应用以下变通方法,例如:


'标题左侧的区域称为GOS容器(shellcont)。
'它包含一个GuitToolBarControl(shell),其中一个按钮名为%GOS_TOOLBOX,
'类型为“ButtonAndMenu”(带有下拉菜单的按钮)。
'单击按钮的下拉部分。
session.findById(“wnd[0]/titl/shellcont/shell”)。按ContextButton“%GOS\u工具箱”
'按菜单项“附件列表”
session.findById(“wnd[0]/titl/shellcont/shell”)。选择ContextMenuItem“%GOS\u VIEW\u ATTA”
'如果有附件,则应打开一个弹出窗口(wnd[1]),否则不会打开。
出错时继续下一步
session.findById(“wnd[1]”)。关闭
如果错误号为0,则
msgbox“没有附件。”
如果结束
错误转到0
...
关于这一点,ScriptMan

我使用以下方法解决了问题:

session.findById("wnd[0]/titl/shellcont/shell").pressContextButton "%GOS_TOOLBOX"
session.findById("wnd[0]/titl/shellcont/shell").selectContextMenuItem "%GOS_VIEW_ATTA"

Err.Clear
On Error Resume Next

If session.findById("/app/con[0]/ses[0]/wnd[1]").changeable = True Then
  err1 = Err.Number
End If

If session.findById("/app/con[0]/ses[1]/wnd[1]").changeable = True Then
  err3 = Err.Number
End If

On Error GoTo 0

If err1 = 619 And err3 = 619 Then
Else
session.findById("wnd[0]").sendVKey 3

我只是不知道为什么有时候代码有时是[…]/ses[0]/wnd[0],有时是[…]ses[0]/wnd[1]。。。所以,我做了两行,每个案例一行。

欢迎来到so!在你的文章中添加一些上下文,这样就容易理解,添加你想要实现的内容?你卡在哪里了?你犯了什么错误?另外,请阅读了解如何制作完美的回答问题谢谢。现在好了吗?是的,比最初的好,但仍有改进的余地