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:




