2017-11-08 84 views
0

SAPの行の特定のセルからvbaを使用してExcelテーブルにデータを取得しようとしています。私が必要とする5-6の項目をクリックして私のマクロを記録するとき、それは私が1つをクリックしたことを私に与える。さらに、私はセルからSAPへのデータを取得する方法がありません。 SAPコードはここにあります:SAPから特定のセルデータをExcelに取得する

Dim W_Ret As Boolean 



W_Ret = Attach_Session 
If Not W_Ret Then 
    Exit Sub 
End If 

startrow = 10 

On Error GoTo myerr 

objSess.findById("wnd[0]").maximize 
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "/nymm_pricelist" 
objSess.findById("wnd[0]").sendVKey 0 
objSess.findById("wnd[0]/usr/ctxtS_MATNR-LOW").Text = Cells(currentline, 1).Value 
objSess.findById("wnd[0]/usr/ctxtS_VKORG-LOW").Text = Cells(currentline, 4).Value 
objSess.findById("wnd[0]/usr/ctxtS_VKORG-LOW").SetFocus 
objSess.findById("wnd[0]/usr/ctxtS_VKORG-LOW").caretPosition = 4 
objSess.findById("wnd[0]").sendVKey 8 
Set myGrid = session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell") 
Cells(currentline, 5).Value = myGrid.GetCellValue(0, "MAKTX") 
Cells(currentline, 6).Value = myGrid.GetCellValue(0, "GLOBALSALES_KBETR") 
Cells(currentline, 7).Value = myGrid.GetCellValue(0, "GLOBALSALES_KONWA") 
Cells(currentline, 8).Value = myGrid.GetCellValue(0, "GLOBALTRANSFER_KBETR") 
Cells(currentline, 9).Value = myGrid.GetCellValue(0, "GLOBALTRANSFER_KONWA") 


' Setting the line status to completed 
Cells(currentline, 2).Value = 1 
Exit Sub 

myerr: 
' Some error occured 
' Setting the line status to Failed 
Cells(currentline, 2).Value = 2 

ヘルプがぴったりです!

答えて

3

私は以下のような問題を解決します。

  1. まず、ヘルプスクリプトを記録します。そうすることで、グリッドの関連する列が次々とマークされる。昇順でソートされます。このように関心のある列をすべて処理した後は、記録されたスクリプトのすべての列名を検出できます。例えば、正しいスクリプトで

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

  2. さ:

  3. ヘルプスクリプトは次のようになります。次の文字列Xの場合

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

- V、有効な列名が使用されるべきです。

よろしく、 ScriptMan

+0

私はそれはあなたの提案のように見えるが、私のコードはまだExcelに値を挿入するために失敗書き直されています。書き直したコードを質問に入れてください。 – Sidvi

+0

変数を変更するのを忘れて、それは素晴らしい動作します!ありがとうございました! – Sidvi

関連する問題