0

我正在尝试自动化 T-Code-VA03。我在采购订单号文本框中输入采购订单号,然后按F8

屏幕一

这会提示一个包含多行标签的窗口。

屏幕 2

我的要求是,我想选择日期最晚的那个。我试图在代码下方记录它的脚本。

session.findById("wnd[0]/usr/txtRV45S-BSTNK").text = "123456789"
session.findById("wnd[0]/usr/txtRV45S-BSTNK").setFocus
session.findById("wnd[0]/usr/txtRV45S-BSTNK").caretPosition = 8
session.findById("wnd[0]").sendVKey 8
session.findById("wnd[1]/usr/lbl[49,6]").setFocus
session.findById("wnd[1]/usr/lbl[49,6]").caretPosition = 0

我可以看到有带索引的标签。如何遍历整个窗口并将焦点放在最新日期行?

4

2 回答 2

2

使用 VB 脚本,您可以尝试以下操作:

. . .
session.findById("wnd[0]").sendVKey 8
for i = 6 to 99
 on error resume next
 session.findById("wnd[1]/usr/lbl[49," & cstr(i) & "]").setFocus
 if err.number <> 0 then Exit for
 on error goto 0
 session.findById("wnd[1]/usr/lbl[49," & cstr(i) & "]").caretPosition = 0
next 

问候, ScriptMan

于 2017-11-07T13:54:28.257 回答
1

如果你真的需要做一些事情,比如遍历窗口并将焦点放在最新日期行,不要用 VBA 做,因为你可能会遇到很多问题。

说了上面那个,试试 sendkeyshttps://msdn.microsoft.com/en-us/vba/excel-vba/articles/application-sendkeys-method-excel和 send TAB。然后在您的表单中搜索“项目”的代码。在此之后,发送选项卡 8 次以转到PO Date. 在清单上写下日期。再次发送 TAB 11 次到下一个日期。把它写在一个清单上。所以,直到没有更多的日期。

无论如何,正如我所提到的,这不是一个很好的解决方案。最好的方法是简单地询问数据库管理员对数据库的只读访问权限或自定义视图。有了它,您可以制定一个强大的解决方案,读取最新日期。

于 2017-11-07T11:30:41.467 回答