我正在尝试使用vba将SAP中连续特定单元格中的数据转换为excel表。当我录制我的一个宏点击我需要的5-6项时,它只给我点击一个。此外,我无法以任何方式将数据从单元格转移到SAP中。 SAP代码在这里:
{{1}}
任何帮助都是预先确定的!
答案 0 :(得分:3)
我解决了以下问题。
首先,我录制了一个帮助脚本。在这样做时,网格的相关列一个接一个地标记,例如,按升序排序。在以这种方式处理所有感兴趣的列之后,您可以发现记录脚本中的所有列名称。
帮助脚本应如下所示:
. . .
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").currentCellColumn = "GLOBALTRANSFER_KONWA"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").selectColumn "GLOBALTRANSFER_KONWA"
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").pressToolbarButton "&SORT_ASC"
然后在正确的脚本中,例如以下内容:
. . .
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "/nymm_pricelist"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtS_MATNR-LOW").text = Cells(currentline, 1).Value
session.findById("wnd[0]/usr/ctxtS_VKORG-LOW").text = Cells(currentline, 4).Value
session.findById("wnd[0]/usr/ctxtS_VKORG-LOW").setFocus
session.findById("wnd[0]/usr/ctxtS_VKORG-LOW").caretPosition = 4
session.findById("wnd[0]").sendVKey 8
set myGrid = session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell")
'myPar_1 = myGrid.getcellvalue (0 , "X")
'myPar_2 = myGrid.getcellvalue (0 , "Y")
'myPar_3 = myGrid.getcellvalue (0 , "Z")
'myPar_4 = myGrid.getcellvalue (0 , "U")
'myPar_5 = myGrid.getcellvalue (0 , "V")
myPar_6 = myGrid.getcellvalue (0 , "GLOBALTRANSFER_KONWA")
对于字符串X-V,将使用有效的列名。
此致 ScriptMan
答案 1 :(得分:0)
脚本人答案非常有用。对于像我这样一开始并不了解的初学者:
您可以通过指定SAP中的文本位置来创建存储文本的变量。示例:
value = session.FindById("wnd[0]/usr/tblSAPL/ctxtAFVGD[4,0]").Text
这会将SAP文本保存到value变量。
简而言之:
value = session.FindById("wnd[0]/usr/TableElement/CellElement[x,y]").Text
' where
' value stores the text
' x is column number
' y is row number
' TableElement and CellElement are found by recording
' a SAP script and clicking around on the table to figure out
' how the elements are named