首页 > 解决方案 > 错误转到它不适用于 Excel VBA

问题描述

我正在为这个项目使用 excel VBA。

我正在尝试在 sap 上运行一个脚本,这将导致不同的补丁,具体取决于当前循环中出现的错误类型,并且我在 erro goto 上使用,因为这些不同的补丁只有在目前补丁面临一个错误。

我将突出显示由于某种原因会破坏代码的某些部分,并且如果出现错误,也不要转到我所说的补丁。

出现在这部分代码中的第一个错误:

Pula_popup01:
            
            **Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
    
            On Error GoTo -1
            On Error GoTo Pula_popup02**

出于某种原因,如果要按下的 sap 上不存在此底部,则应该引导我们进入下一步“Pula_popup02”如何,但这不会发生并且代码会中断。

这是完整的代码:

Sub SWO_Closed()

Set SapGUIAuto = GetObject("SAPGUI")
Set SAPApp = SapGUIAuto.GetScriptingEngine
Set SAPCon = SAPApp.Children(0)
Set Session = SAPCon.Children(0)

'
If IsObject(WScript) Then
WScript.ConnectObject Session, "on"
WScript.ConnectObject Application, "on"
End If

    Dim objExcel
    Dim objSheet, intRow, i
    Set objExcel = GetObject(, "Excel.Application")
    Set objSheet = objExcel.ActiveWorkbook.ActiveSheet
     
    
    For i = 2 To objSheet.UsedRange.Rows.Count
Err.Clear
    
    SWO = Trim(CStr(objSheet.Cells(i, 1).Value))
    SWO_Status = Trim(CStr(objSheet.Cells(i, 2).Value))
    Fechada = Trim(CStr(objSheet.Cells(i, 3).Value))
    Status = ""
    
    If SWO = "" Then

    MsgBox "Macro finalizada!"
    Exit Sub
    
    End If
    
        If SWO_Status = "Fechar" Then
    
            'Session.findById("wnd[0]").maximize
            Session.findById("wnd[0]/tbar[0]/okcd").Text = "/niw32"
            Session.findById("wnd[0]").sendVKey 0
            Session.findById("wnd[0]/usr/ctxtCAUFVD-AUFNR").Text = SWO
            Session.findById("wnd[0]").sendVKey 0
            Session.findById("wnd[0]/tbar[1]/btn[48]").press
            
            On Error GoTo -1
            On Error GoTo Pula_popup01
            
            
Pula_popup01:
            
            **Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
    
            On Error GoTo -1
            On Error GoTo Pula_popup02
            
            'if no error appears
            GoTo resume_fim_loop
            
Pula_popup02:
            
            Session.findById("wnd[1]/usr/btnOPTION2").press
            Session.findById("wnd[1]/tbar[0]/btn[0]").press
            On Error GoTo -1
            On Error GoTo Pula_popup03
            
            Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
    
            'if no error appears
            GoTo resume_fim_loop
            
Pula_popup03:

            Session.findById("wnd[2]/tbar[0]/btn[0]").press
            Session.findById("wnd[1]/usr/btnSPOP-VAROPTION1").press
            
            'the last hope of mankind
            GoTo resume_fim_loop

Continue:

            Session.findById("wnd[1]/usr/btnOPTION2").press
            Session.findById("wnd[1]/tbar[0]/btn[0]").press
            Status = "Ok"
            
                          
        
        End If
        
resume_fim_loop:
    
        If Status = "Ok" Then
        
            Cells(i, 3).Value = "SWO Fechada"
        
            
        ElseIf Status = "" Then
        
            Cells(i, 3).Value = "Erro ao Fechar"
        
        End If
     
        
    Next
   
    
MsgBox ("Macro finalizada!")

End Sub

标签: excelvba

解决方案


推荐阅读