从SAP获取特定的单元数据以实现卓越

时间:2017-11-08 10:24:57

标签: excel-vba sap vba excel

我正在尝试使用vba将SAP中连续特定单元格中的数据转换为excel表。当我录制我的一个宏点击我需要的5-6项时,它只给我点击一个。此外,我无法以任何方式将数据从单元格转移到SAP中。 SAP代码在这里:

{{1}}

任何帮助都是预先确定的!

2 个答案:

答案 0 :(得分:3)

我解决了以下问题。

  1. 首先,我录制了一个帮助脚本。在这样做时,网格的相关列一个接一个地标记,例如,按升序排序。在以这种方式处理所有感兴趣的列之后,您可以发现记录脚本中的所有列名称。

  2. 帮助脚本应如下所示:

    . . . 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"

  3. 然后在正确的脚本中,例如以下内容:

    . . . 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")

  4. 对于字符串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