2017-11-08 1 views
0

SAP의 행에있는 특정 셀의 데이터를 vba를 사용하는 Excel 테이블로 가져 오려고합니다. 내가 필요한 매크로 5-6 개를 클릭하여 매크로를 기록 할 때, 나는 단지 하나를 클릭했다. 더 나아가 셀에서 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, 유효한 열 이름이 사용됩니다. 나는 그것을 다시 한

+0

안부, ScriptMan는 귀하의 제안과 같이 할 수 있지만, 내 코드는 여전히 엑셀에 값을 삽입하는 데 실패합니다. 다시 작성된 코드를 질문에 넣으십시오. – Sidvi

+0

변수를 잊어 버리면 환상적입니다! 고맙습니다! – Sidvi

관련 문제