问题描述
我在下面的 VBA 中有 SAP GUI 脚本代码,它适用于除 1 人之外的所有人。它会通过弹出窗口在 SAP 中下载报告,只需输入路径并命名文件即可。
就像附加的图片一样,打开另存为窗口并停止 SAP 脚本。我不确定为什么它对某个人有用。
保存窗口:
代码:
Function ProcessRow(iRow,StatusCol,MessageCol)
Dim W_Var1,W_Var2,W_Var3,W_Var4,W_Var5,W_Var6,W_Var7,W_Var8,W_Var9,W_Var10
Dim lineitems As Long
Dim PasteSheet As Variant
Dim ClearSAPRow As Variant
' Set the line status to "processing..."
objSheet.Cells(iRow,StatusCol) = 1
'Column 1 input
If objSheet.Cells(iRow,1) <> "" Then
W_Var1 = objSheet.Cells(iRow,1)
Else
W_Var1 = ""
End If
'Column 2 input
If objSheet.Cells(iRow,2) <> "" Then
W_Var2 = objSheet.Cells(iRow,2)
Else
W_Var2 = ""
End If
'Column 3 input
If objSheet.Cells(iRow,3) <> "" Then
W_Var3 = objSheet.Cells(iRow,3)
Else
W_Var3 = ""
End If
'Column 4 input
If objSheet.Cells(iRow,4) <> "" Then
W_Var4 = objSheet.Cells(iRow,4)
Else
W_Var4 = ""
End If
' Set error handling to the below code where we can capture if a line had Failed in the GUI script
On Error GoTo myerr
' Determine which data to copy for SAP selection
If W_Var1 & W_Var2 = "DRBYBILLINGNBRSubsequent sales and distrib" Then
PasteSheet = "SQ00 Invoice-DR"
Call Module3.GetInvoice
Else
If W_Var1 & W_Var2 = "DRBYBILLINGNBRDR Number" Then
PasteSheet = "SQ00 DR's"
Call Module3.GetDRNumber
Else
If W_Var1 & W_Var2 = "CASEBYACCTDOCObject Key" Then
PasteSheet = "SQ00 Case by Billing Doc"
Call Module3.GetojbectKey
Else
W_Var10 = ""
End If
End If
End If
' --- SAP GUI Script starts here ---
'objSess.findById("wnd[0]").Maximize
objSess.findById("wnd[0]").Maximize
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "/nsq00"
objSess.findById("wnd[0]").sendVKey 0
'enter query name & execute
objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").Text = W_Var1
objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").SetFocus
objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").caretPosition = 14
'objSess.findById("wnd[0]/tbar[2]/btn[8]").Press 'this is execute
objSess.findById("wnd[0]/tbar[2]/btn[17]").Press
objSess.findById("wnd[2]/usr/ctxtRS38R-VARIANT").Text = W_Var4
objSess.findById("wnd[2]").sendVKey 0
'paste values
objSess.findById("wnd[0]/usr/btn%_" & W_Var3 & "_%_APP_%-VALU_PUSH").Press
objSess.findById("wnd[2]/tbar[0]/btn[16]").Press
objSess.findById("wnd[2]/tbar[0]/btn[24]").Press
objSess.findById("wnd[2]/tbar[0]/btn[8]").Press
'execute
objSess.findById("wnd[0]/tbar[2]/btn[8]").Press
'Export to Excel
objSess.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[2]").Select
objSess.findById("wnd[2]/usr/radRB_OTHERS").SetFocus
objSess.findById("wnd[2]/usr/radRB_OTHERS").Select
objSess.findById("wnd[2]/usr/cmbG_LISTBox").Key = "08"
'Choose Excel (not table)
objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
objSess.findById("wnd[2]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[0,0]").Select
objSess.findById("wnd[2]/usr/subSUBSCREEN_STEPLOOP:SAPLSPO5:0150/sub:SAPLSPO5:0150/radSPOPLI-SELFLAG[0,0]").SetFocus
Application.Wait (Now + TimeValue("00:00:01"))
objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
Application.Wait (Now + TimeValue("00:00:01"))
objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
Application.Wait (Now + TimeValue("00:00:10"))
'insert copy and paste from activework book to Script.xlsm
Call copySAPExcel(PasteSheet)
'Press check Box on Save the data in the spreadsheet dialog Box
objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[0]/tbar[0]/okcd").Text = "/nsq00"
'objSess.findById("wnd[0]").sendVKey 0
'objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").Text = W_Var1
'objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").SetFocus
'objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").caretPosition = 14
'objSess.findById("wnd[0]/tbar[2]/btn[8]").Press
'objSess.findById("wnd[0]/usr/btn%_SP$00004_%_APP_%-VALU_PUSH").Press
'objSess.findById("wnd[2]/tbar[0]/btn[24]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[8]").Press
'objSess.findById("wnd[0]/tbar[2]/btn[8]").Press
'objSess.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[2]").Select
'objSess.findById("wnd[2]/usr/radRB_OTHERS").SetFocus
'objSess.findById("wnd[2]/usr/radRB_OTHERS").Select
'objSess.findById("wnd[2]/usr/cmbG_LISTBox").Key = "08"
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[0]/tbar[0]/okcd").Text = "/nsq00"
'objSess.findById("wnd[0]").sendVKey 0
'objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").Text = W_Var1
'objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").SetFocus
'objSess.findById("wnd[0]/usr/ctxtRS38R-QNUM").caretPosition = 13
'objSess.findById("wnd[0]/tbar[2]/btn[8]").Press
'objSess.findById("wnd[0]/usr/txtSP$00003-LOW").SetFocus
'objSess.findById("wnd[0]/usr/txtSP$00003-LOW").caretPosition = 0
'objSess.findById("wnd[0]/usr/btn%_SP$00003_%_APP_%-VALU_PUSH").Press
'objSess.findById("wnd[2]/tbar[0]/btn[24]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[8]").Press
'objSess.findById("wnd[0]/tbar[2]/btn[8]").Press
'objSess.findById("wnd[0]/mbar/menu[0]/menu[3]/menu[2]").Select
'objSess.findById("wnd[2]/usr/radRB_OTHERS").SetFocus
'objSess.findById("wnd[2]/usr/radRB_OTHERS").Select
'objSess.findById("wnd[2]/usr/cmbG_LISTBox").Key = "08"
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'objSess.findById("wnd[2]/tbar[0]/btn[0]").Press
'return to SESSION_MANAGER
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "/n"
objSess.findById("wnd[0]").sendVKey 0
' Gets the message from the status bar and save it in column B
objSheet.Cells(iRow,MessageCol) = objSBar.Text
' Update the Status to "Completed" and exit
objSheet.Cells(iRow,StatusCol) = 2
Exit Function
myerr:
' Update the status to "Error"
objSheet.Cells(iRow,StatusCol) = 3
objSess.findById("wnd[0]/tbar[0]/okcd").Text = "/n"
objSess.findById("wnd[0]").sendVKey 0
End Function
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)