Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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






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

×