问题描述
我的脚本正在从Excel数据中将数据加载到SAP GUI配方屏幕(事务代码C202
)中。
在“配方”屏幕之一中,将根据Excel中的“相”值列输入值。我需要为Excel工作表中的每个特定“阶段”更新第二个“标准值”和第三个“标准值”。
您能帮我吗?我需要在行之间切换以修改每个阶段
For i = 1 To LastRow
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nC202"
session.findById("wnd[0]").sendVKey 0
Plant = shControlPanel.Range("A" & CurrentRow).Value
RecipeGroup = shControlPanel.Range("B" & CurrentRow).Value
Recipe = shControlPanel.Range("C" & CurrentRow).Value
ECR = shControlPanel.Range("D" & CurrentRow).Value
Phase = shControlPanel.Range("E" & CurrentRow).Value
Value2 = shControlPanel.Range("F" & CurrentRow).Value
Value3 = shControlPanel.Range("G" & CurrentRow).Value
session.findById("wnd[0]/usr/ctxtRC271-PLNNR").Text = RecipeGroup
session.findById("wnd[0]/usr/txtRC271-PLNAL").Text = Recipe
session.findById("wnd[0]/usr/ctxtRC27M-WERKS").Text = Plant
session.findById("wnd[0]/usr/ctxtRC271-AENNR").Text = ECR
session.findById("wnd[0]/usr/ctxtRC271-STTAG").Text = "04.09.2020"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
j = 1
Phasetochange = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VORNR[0," & j & "]").Text
Resorce = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/ctxtPLPOD-ARBPL[4," & j & "]").Text
do while Resorce <> ""
Phasetochange = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VORNR[0," & j & "]").Text
If Phase = Phasetochange Then
session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW02[18," & j & "]").Text = Value2
session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW03[21," & j & "]").Text = Value3
session.findById("wnd[0]").sendVKey 0
j = j + 1
Else
j = j + 1
End If
CurrentRow = CurrentRow + 1
Phase = shControlPanel.Range("E" & CurrentRow).Value
Value2 = shControlPanel.Range("F" & CurrentRow).Value
Value3 = shControlPanel.Range("G" & CurrentRow).Value
Loop
session.findById("wnd[0]/tbar[0]/btn[11]").press
On Error Resume Next
session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
shControlPanel.Range("H" & CurrentRow).Value = "Recipe " & Recipe & " has been changed"
CurrentRow = CurrentRow + 1
解决方法
我无权访问事务C202。但是从我的角度来看,我试图使事情顺利进行。
LastRow = ActiveCell.SpecialCells(xlLastCell).Row
For i = 1 To LastRow
session.findById("wnd[0]/tbar[0]/okcd").Text = "/nC202"
session.findById("wnd[0]").sendVKey 0
Plant = shControlPanel.Range("A" & i).Value
RecipeGroup = shControlPanel.Range("B" & i).Value
Recipe = shControlPanel.Range("C" & i).Value
ECR = shControlPanel.Range("D" & i).Value
Phase = shControlPanel.Range("E" & i).Value
Value2 = shControlPanel.Range("F" & i).Value
Value3 = shControlPanel.Range("G" & i).Value
session.findById("wnd[0]/usr/ctxtRC271-PLNNR").Text = RecipeGroup
session.findById("wnd[0]/usr/txtRC271-PLNAL").Text = Recipe
session.findById("wnd[0]/usr/ctxtRC27M-WERKS").Text = Plant
session.findById("wnd[0]/usr/ctxtRC271-AENNR").Text = ECR
session.findById("wnd[0]/usr/ctxtRC271-STTAG").Text = "04.09.2020"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]").sendVKey 0
j = 1
Do
PhaseToChange = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VORNR[0," & j & "]").Text
Resorce = session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/ctxtPLPOD-ARBPL[4," & j & "]").Text
If Resorce = "" then exit do
If Phase = PhaseToChange Then
session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW02[18," & j & "]").Text = Value2
session.findById("wnd[0]/usr/tabsTABSTRIP_RECIPE/tabpVOUE/ssubSUBSCREEN_RECIPE:SAPLCPDI:4401/tblSAPLCPDITCTRL_4401/txtPLPOD-VGW03[21," & j & "]").Text = Value3
session.findById("wnd[0]").sendVKey 0
shControlPanel.Range("H" & i).Value = "Recipe " & Recipe & " has been changed"
End If
j = j + 1
Loop
session.findById("wnd[0]/tbar[0]/btn[11]").press
On Error Resume Next
session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
On error goto 0
next i
关于ScriptMan,