Mover e Renomear Arquivos Excel VBA
Neste artigo você aprenderá a como mover e renomear arquivos em massa utilizando Excel e VBA com um exemplo prático com código comentado e download do arquivo pronto para uso.
Como mover e renomear arquivos Excel VBA
Com VBA você pode automatizar muitas tarefas no Excel.
No nosso exemplo de solução você poderá renomear e mover arquivos em massa usando o Excel e para pastas e nomes diferentes para cada linha.
O código para mover e renomear um arquivo em Excel é o seguinte
Name "C:\Origem\Arquivo1.txt" As "C:\Destino\Renomeado1.txt"
A função Name no Excel permite que sejam movidos arquivos de uma pasta para outra, inclusive renomeando.
No entanto ela tem algumas restrições:
- Esta função não serve apenas para renomear arquivos, mas também pastas. Mas só pode renomear pastas se estiver dentro de uma mesma unidade.
- O arquivo sendo movido deve estar fechado, senão ocorrerá um erro.
- A função não cria pastas de destino. Para isso use este código: https://www.guiadoexcel.com.br/criar-pastas-automaticamente-com-vba/
Mover e renomear arquivos em massa no Excel
Usando o procedimento Name criei o seguinte código que realiza a movimentação e/ou renomeação de arquivos em massa:
Public Sub lsAcaoMover() lsMoverArquivoRenomear 1, 2 End Sub Public Sub lsAcaoDesfazer() lsMoverArquivoRenomear 2, 1 End Sub 'Os parâmetros indicam a ordem das colunas de origem e destino Private Sub lsMoverArquivoRenomear(ByVal lColOrigem As Integer, ByVal lColDestino As Integer) On Error GoTo TratarErro Dim lUltimaLinhaAtiva As Long Dim lRng As Range Dim i As Long 'Última linha da lista lUltimaLinhaAtiva = Arquivos.Cells(Arquivos.Rows.Count, 2).End(xlUp).Row 'Range de dados com os arquivos na variável Set lRng = Arquivos.Range("B9:C" & lUltimaLinhaAtiva) 'Loop para renomear os arquivos um a um For i = 1 To lRng.Rows.Count Name lRng(i, lColOrigem).Value As lRng(i, lColDestino).Value Next i MsgBox "Arquivo movidos e renomeados com êxito!" Sair: Exit Sub TratarErro: If Err.Number = 53 Then MsgBox "Arquivo de origem não localizado", vbCritical, "Atenção" Else If Err.Number = 58 Then MsgBox "O arquivo já existe", vbCritical, "Atenção" Else MsgBox "Erro: " & Err.Number & "-" & Err.Description End If End If GoTo Sair End Sub
O código acima contém três partes.
A parte principal é lsMoverArquivoRenomear aonde você tem um procedimento que recebe dois parâmetros:
lColOrigem: 1 ou 2. Se origem for igual a um, destino tem que ser 2. Este campo indica a ordem que serão realizadas as movimentações e renomeações dos arquivos, permitindo desfazer apenas mudando de 1 para 2. O col origem é para indicar a coluna de origem.
lColDestino: 1 ou 2. Se destino for igual a um, destino tem que ser 1. Da mesma forma que a lColOrigem indica a origem o lColDestino indica a coluna de destino.
Desta forma implementamos os dois seguintes procedimentos:
lsAcaoMover: Move e renomeia os arquivos que estão na coluna Arquivo de origem para os que estão na coluna Arquivo de destino.
lsAcaoDesfazer: Desfaz o processo, movendo e renomeando os arquivos que estão na coluna de destino para o nome e caminho da coluna de origem.
Download
Realize o download do arquivo deste exemplo e da vídeo-aula acima neste botão abaixo. Basta se inscrever na nossa newsletter gratuita para o download automático.
Baixe a planilhaCurso Excel Completo – Do Básico ao VBA
Quer aprender Excel do Básico, passando pela Avançado e chegando no VBA? Clique na imagem abaixo: