我在运行SAP GUI的Excel文件中使用了宏。有一个步骤,当我单击SAP中的一个按钮时,将弹出另一个窗口。
为此,我编写了这样的代码:
session.findbyid("wnd[0]/XX/btnXX").press
session.findbyid("wnd[1]/XX/btnXXX").press
窗口(btnXXX
)中有一个按钮(wnd[1]
)。但是,当我执行此查询时,我发现找不到findbyid
的错误对象。
当我保留断点并执行它时,它在以上代码的第二行上引发了错误。我尝试选择activewindow.name
,它仍然显示wnd[0]
。这里的问题是wnd[1]
没有打开。
有人知道为什么第二个“按钮按下”不起作用吗?
答案 0 :(得分:0)
您应该可以将所有鼠标单击替换为键盘笔触。
替换:
session.findbyid("wnd[0]/XX/btnXX").press
使用:
session.findById("wnd[0]").sendVKey(N)
其中N是链接的热键ID。
要获取确切的命令,请使用SAP脚本记录,并且仅使用键盘在视图和窗口之间切换。确定方式的最简单方法是将鼠标悬停在通常会单击以学习热键的按钮上,然后记录热键。
注1)到目前为止,我发现btn [XX]始终映射到sendVKey(XX),但我不能确定情况总是如此。
注2)即使按钮向下另一层(/ tbar,/ usr等),sendVKey似乎总是在窗口(wnd [Y])之外被引用。