微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

导出报告时 VBA 停止

如何解决导出报告时 VBA 停止

我在下面的 VBA 中有 SAP GUI 脚本代码,它适用于除 1 人之外的所有人。它会通过弹出窗口在 SAP 中下载报告,只需输入路径并命名文件即可。

就像附加的图片一样,打开另存为窗口并停止 SAP 脚本。我不确定为什么它对某个人有用。

保存窗口:

enter image description here

代码

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 举报,一经查实,本站将立刻删除。