Ir ao conteúdo
  • Cadastre-se
diego_janjao

Excel VBA - Recurso On Error GoTo

Recommended Posts

Pessoal, tenho o código abaixo, no qual ele copia um arquivo, abre esse arquivo, copia os dados, cola na planilha que estou usando, fecha o arquivo copiado e deleta ele.

Como ainda não entendi muito bem como usar o Recurso On Error GoTo, gostaria de pedir essa ajuda:

 

Quando acontecer quaisquer erros, gostaria que ele continuasse a parte de fechar o arquivo copiado e deleta-lo. Pois se não fizer isso, mesmo depois do aviso do erro, quando tentar rodar o código novamente vai dar erro porque o arquivo cópia já existe.

Private Sub pesquisar_btn_Click()

    Const caminho = "\\ln008svr03\processos\Projeto BPF Bonsucesso\10_Recebimento\"
    Const arquivo = "RO.BN.05_002_Registro de Recebimento 2018.xlsb"
    Dim arqTemp As Object
    Dim EmpFound As Range
    Dim Wb As Workbook
    Dim copia As Range
        
  Application.ScreenUpdating = False
    
    On Error GoTo aviso
        
    With CreateObject("Scripting.FileSystemObject")
      If .FileExists(caminho & arquivo) Then
        .CopyFile Source:=caminho & arquivo, Destination:=caminho & arquivo & "(Cópia)", _
                  OverWriteFiles:=True
        Set arqTemp = .GetFile(caminho & arquivo & "(Cópia)")
      Else
        Exit Sub
      End If
      
      
      Set Wb = Workbooks.Open(arqTemp.Path)
      Wb.Sheets("Registro de Recebimento 2018").Activate
    
    With Range("AA8:AA9007")
    
    Set EmpFound = .Find(Me.analise_txt.Value)
        
    If EmpFound Is Nothing Then
    
        MsgBox "NÚMERO DE ANÁLISE NÃO ENCONTRADO", vbCritical, "Cadastro de Não Conformidades"
        
        Me.analise_txt.Value = ""
        
        Else
                
            With Range(EmpFound.Address)
        
            Me.codigo_txt = .Offset(0, -22)
            Me.produto_txt = .Offset(0, -21)
            Me.forn_txt = .Offset(0, -23)
            Me.lote_txt = .Offset(0, -20)
            Me.qtdrecebida_txt = Format(.Offset(0, -14), "#,##0.00") & " " & .Offset(0, -13)
            Me.qtdrec_txt = Format(.Offset(0, -14), "#,##0.00")
            Me.nota_txt = .Offset(0, -15)
            Me.recebimento_txt = .Offset(0, -24)
            Me.fabricacao_txt = .Offset(0, -18)
            Me.validade_txt = .Offset(0, -17)
            Me.undmedida_txt = .Offset(0, -13)
            Me.pedido_txt = .Offset(0, -11)
            
            Wb.Sheets("Fornecedores").Activate
    
            With Range("A3:A350")
    
            Set EmpFound = .Find(Me.forn_txt)
        
            With Range(EmpFound.Address)
            
                Me.cnpj_text = .Offset(0, 1)
                Me.telefone_txt = .Offset(0, 2)
                Me.contato_txt = .Offset(0, 4)
                Me.email_txt = .Offset(0, 3)
            
            End With
           End With
                       
         End With
         
            On Error Resume Next
        
            On Error GoTo 0
            
            End If
                      
            Wb.Sheets("Fornecedores").Range("A3:E3").Select
            Range(Selection, Selection.End(xlDown)).Copy
            Windows("Gestão de Não Conformidade Externa.xlsb").Activate
                Sheets("Fornecedores").Select
                Range("A3").Select
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
            Application.CutCopyMode = False
            
            Wb.Activate
            Wb.Sheets("Fornecedores").Range("G3:S3").Select
            Range(Selection, Selection.End(xlDown)).Copy
            Windows("Gestão de Não Conformidade Externa.xlsb").Activate
                Sheets("Fornecedores").Select
                Range("F3").Select
                Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                    :=False, Transpose:=False
                        
            Application.CutCopyMode = False
            Application.DisplayAlerts = False
            Sheets("RO 14.6 _ 003").Select
            
        Wb.Close SaveChanges:=False
        arqTemp.Delete True
    End With
        Set arqTemp = Nothing: Set EmpFound = Nothing: Set Wb = Nothing
    End With
    
    Windows("Gestão de Não Conformidade Externa.xlsb").Activate
       
    Application.ScreenUpdating = True
    
    Exit Sub

aviso: MsgBox "Houve um erro inesperado, favor informar ao responsável!", vbCritical, "Registro de Não Conformidade Externa"

End Sub

Como poderia arrumar a parte do arqTemp.Delete True?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×