我尝试在SAP GUI中自动执行此任务,选择两列,然后向下翻页,直到最后一项,并复制选择。
我在SAP GUI中记录了一个脚本(见结尾)。脚本的这一行负责向下翻页,并在找到底部时停止:
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell" _
).firstVisibleRow = NUMBER
但是这个数字总是变化的,我不能说最后一行是577、600或900......我需要每次都知道确切的数字。
我认为While
应该是有用的,但我不知道如何在SAP GUI中验证它。
录制脚本:
Sub AUTOMATE()
If Not IsObject(App) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set App = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = App.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject Application, "on"
End If
session.findById("wnd[0]").maximize
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").setCurrentCell -1, "FEVOR"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").firstVisibleRow = 84
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectColumn "FEVOR" 'the first column I want
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectColumn "AUFNR" 'the second column I want
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").firstVisibleRow = 140
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").firstVisibleRow = 280
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").firstVisibleRow = 336
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").firstVisibleRow = 476
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").firstVisibleRow = 532
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").firstVisibleRow = 577
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").contextMenu
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell/shellcont[1]/shell").selectContextMenuItemByPosition "0" 'copy the selection
Range("F2").Select 'select the cell in my target sheet
ActiveSheet.Paste 'paste it
End Sub
1条答案
按热度按时间bqf10yzr1#
不确定这是否是您要查找的内容,但要查找我使用的行数
countRows=会话.查找按ID(“wnd[0]/usr/cntlGRID 1/ shell 控制/ shell 控制[1]/ shell ”).行计数
然后在while循环中查找特定项:
po =会话.查找依据ID(“wnd[0]/usr/cntlGRID 1/ shell 控制/ shell / shell 控制[1]/ shell ”).获取单元格值(j,“VBELN”)
其中po是我想要的变量,j是行号。我使用的是python,因此语法可能不同