【发布时间】:2019-12-19 16:37:45
【问题描述】:
我想读取表格上的单元格值 - 下面的事务 C202 示例。
我可以使用 SAP GUI Scripting Recorder 到 "check" 或 "select" (row = 5, column = 1),在 "0122" 旁边和 (row = 5, column = 1),在 "0125" 旁边。
它给了我一个简单的代码:
''' selects 0122
session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401").getAbsoluteRow(4).selected = true
'''selects 0125
session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401").getAbsoluteRow(7).selected = true
但是,它会改变可用的行。
有时会有:
0100, 0110, 0120, 0121, 0122, 0123, 0124, 0125, 0130, 0140
-sometimes there will be 0100, 0110, 0122, 0123, 0124, 0125, 0140
-sometimes there will be 0100, 0121, 0122, 0123, 0124, 0125, 0140
-sometimes there will be 0100, 0122, 0123, 0125, 0130, 0140
etc
我想读取 column = 2 以便知道它是 0122 还是 0125,然后检查它们。
我怎样才能把这个值放在一个变量中并使用 msgbox 来显示它?
PSEUDO CODE
dim readVariable as string
for row = 1 to NumberOfRows
readVariable = Table.Read (row,2)
if readVariable = 0122
msgbox "row = " & row " & " is 0122"
end if
if readVariable = 0125
msgbox "row = " & row " & " is 0125"
end if
next
我尝试关注Link 但我无法让它工作。
非常感谢!!!
【问题讨论】:
-
使用记录器,如果您将插入符号(文本光标)定位在字段中,例如在第一个字符处,生成的 VBS 文件将包含类似
session.findById("<the field ID>").caretPosition = 1的内容,因此您自己的 VBS 可以使用这个ID:msgbox session.findById("<the field ID>").text -
感谢一百万,桑德拉·罗西!有效!它显示“0110”。比较 msgbox *** = 0110、msgbox *** = 110 和 msgbox *** = "0110" 返回 TRUE(只有 msgbox *** = "110" 返回 FALSE)。谢谢!它被认为是一个价值,对吧?因为 msgbox *** + 1 返回 111。如何将其读取为字符串? @桑德拉罗西
-
属性
text始终是一个字符串。添加 1 意味着类型转换,根据 VBScript 类型模型,我猜。 -
我写了一个extensive answer about how to work with Table Controls,里面也包含了这个问题的答案。
标签: excel vba vbscript sap-gui