VBA – Copiar Arquivo / Pasta de Trabalho
Este tutorial demonstrará como copiar um arquivo usando o VBA.
O VBA permite que você copie um arquivo usando o FileSystemObject.
Se você quiser aprender a renomear um arquivo, clique neste link: VBA Renomear arquivo
Copiar um Arquivo / Pasta de Trabalho
Mostraremos como copiar o arquivo existente Arquivo Exemplo 1.xlsx na pasta Pasta VBA. Neste exemplo, não renomearemos o arquivo, apenas o copiaremos e o substituiremos. Atualmente, a pasta tem apenas esse arquivo:
Imagem 1. Arquivo na pasta C:\Pasta VBA
Aqui está o código:
Dim oFSO As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Call oFSO.CopyFile("C:\Pasta VBA\Arquivo Exemplo 1.xlsx", "C:\Pasta VBA\", True)
Primeiro, você precisa criar o objeto da classe Scripting.FileSystemObject:
Set oFSO = CreateObject("Scripting.FileSystemObject")
Em seguida, podemos usar o método CopyFile:
Call oFSO.CopyFile("C:\Pasta VBA\Arquivo Exemplo 1.xlsx", "C:\Pasta VBA\", True)
O primeiro parâmetro do método é o caminho de origem e o segundo é o caminho de destino. O terceiro parâmetro é Overwrite. Como temos os mesmos caminhos de origem e destino, precisamos definir Overwrite como True ou False. Neste exemplo, colocamos True, o que significa que o arquivo original será substituído.
Vamos ver agora o que acontece se tivermos os mesmos destinos, mas definirmos Overwrite como False. Você só precisa alterar esta linha do código:
Call oFSO.CopyFile("C:\Pasta VBA\Arquivo Exemplo 1.xlsx", "C:\Pasta VBA\", True)
Como resultado, você receberá um erro, como pode ser visto na Imagem 2:
Imagem 2. Erro ao copiar o arquivo
Copiar e Renomear um Arquivo
Outra opção possível ao copiar um arquivo é renomeá-lo. É semelhante à cópia de um arquivo, mas agora você só precisa definir o caminho de destino com um nome diferente. Aqui está o código:
Dim oFSO As Object
Set oFSO = CreateObject("Scripting.FileSystemObject")
Call oFSO.CopyFile("C:\Pasta VBA\Arquivo Exemplo 1.xlsx", "C:\Pasta VBA\Arquivo Exemplo 1 Copia.xlsx")
Como você pode ver na última linha do código, queremos copiar o arquivo Arquivo Exemplo 1.xlsx na mesma pasta e nomeá-lo para o SArquivo Exemplo 1 Copia.xlsx:
Call oFSO.CopyFile("C:\Pasta VBA\Arquivo Exemplo 1.xlsx", "C:\Pasta VBA\Arquivo Exemplo 1 Copia.xlsx")
Agora temos dois arquivos na Pasta VBA. O resultado do código está na Imagem 3:
Imagem 3. Copiar e renomear o arquivo