Como Abrir um Arquivo com VBA no Excel (Workbooks.Open)

Capa do artigo sobre como abrir um arquivo usando VBA no Excel

Para abrir um arquivo com VBA no Excel, use o comando Workbooks.Open(“caminho\do\arquivo.xlsx”) — o Excel abre a pasta de trabalho normalmente, como se você tivesse aberto manualmente, e a partir daí você pode referenciá-la pelo nome no restante do código.

Muitas vezes é preciso abrir um arquivo com o VBA.

Neste artigo iremos mostrar como fazer para abrir um arquivo utilizando o VBA, e também iremos mostrar um exemplo aonde iremos abrir uma janela aonde um arquivo será selecionado para ser aberto pelo VBA.

🎓
Quer aprender Excel de verdade, do zero ao avançado? Conheça o Curso Excel pra Ontem — aulas práticas, direto ao ponto, sem enrolação. Do zero ao avançado, no seu ritmo
Conhecer o curso →

Youtube

Assista ao vídeo abaixo, caso prefira aprender como fazer para abrir um arquivo utilizando o VBA assistindo a um vídeo.

Miniatura do video: clique para assistir

Ah, e não se esqueça de se INSCREVER no nosso canal.

 

E coloque o seu melhor e-mail abaixo para receber todas as nossas novidades em primeira mão.

Ambiente do VBA

Para podermos utilizar o VBA, primeiramente precisamos abrir o ambiente do VBA no Excel.

Para isso, vá na aba “Desenvolvedor” e clique em “Visual Basic”.

Acessando o Visual Basic pela guia Desenvolvedor do Excel

Ao clicar em “Visual Basic” uma nova janela irá se abrir. Essa nova janela é o ambiente do VBA. 

Para podermos começar a escrever o código que será utilizado precisamos criar um “Módulo”.  

Inserindo um novo Módulo no editor do VBA

  1. Clique com o botão direito em “VBAProject (Pasta1)”. Uma nova janela irá aparecer.
  2. Clique em “Inserir”
  3. Clique em “Módulo”

Ao criar um “Módulo”(1), o fundo cinza que estava na parte direita da tela, será substituído por uma janela(2), e é nessa janela que iremos escrever o nosso código.

Janela de código do módulo criado no VBA, pronta para escrever o script

 

Abrir um arquivo com o VBA

Para abrir um arquivo Excel, utilizando o VBA, será necessário utilizar a função Workbooks.Open, quer irá abrir o arquivo selecionado. Para isso basta colocar entre aspas o caminho completo do arquivo.

Note que tanto faz utilizar, ou não, os parênteses junto com a função. Ela irá funcionar do mesmo jeito.

Sub Abrir_Arquivo()

Workbooks.Open "C:\nome_do_arquivo.xlsx"

End Sub
Sub Abrir_Arquivo()

Workbooks.Open ("C:\nome_do_arquivo.xlsx")

End Sub

Abrir um arquivo a partir de uma variável

Para abrir um arquivo, aonde o caminho dele está armazenado em uma variável, basta utilizar a mesma função acima. Mas ao invés de utilizar o caminho do arquivo, iremos utilizar uma variável que tem o caminho do arquivo. 

Sub Utilizar_uma_variavel_para_abrir_um_arquivo()

Dim arquivo As String
arquivo = "C:\nome_do_arquivo.xlsx"
Workbooks.Open arquivo

End Sub
Sub Utilizar_uma_variavel_para_abrir_um_arquivo()

Dim arquivo As String
arquivo = "C:\nome_do_arquivo.xlsx"
Workbooks.Open (arquivo)

End Sub

Abrir uma janela para selecionar um arquivo para abrir

Se ao invés de informar por escrito o caminho completo do arquivo, você queira deixar esse processo um pouco mais dinâmico, através de uma janela que mostrará os arquivos e você escolherá qual arquivo será aberto.

Nesta parte do tutorial iremos mostrar como fazer para abrir essa janela para poder escolher um arquivo e depois o VBA irá abri-lo.

Para isso iremos usar a função Application.GetOpenFilename. Essa função irá abrir uma janela aonde será possível selecionar um arquivo. O arquivo selecionado não será aberto por essa função, essa função irá retornar o caminho completo do arquivo e esse caminho será armazenado em uma variável.

E essa variável será utilizada, depois, pela função Workbooks.Open, que então irá abrir o arquivo selecionado.

Sub Abrir_janela_para_abrir_arquivo()
Dim arquivo As String arquivo = Application.GetOpenFilename(, , "Abrir arquivo") Workbooks.Open arquivo End Sub

Se inscreva!

Se você ainda está começando com VBA, veja também o nosso guia completo de VBA para iniciantes.

Tratando erro quando o arquivo não existe

Se o caminho informado no Workbooks.Open estiver errado, ou o arquivo tiver sido movido, apagado ou renomeado, o VBA gera um erro em tempo de execução e a macro para de funcionar. Para evitar que isso trave a planilha do usuário final, combine o Workbooks.Open com uma verificação antes de abrir:

Sub Abrir_Arquivo_Com_Tratamento()

Dim arquivo As String
arquivo = "C:\nome_do_arquivo.xlsx"

If Dir(arquivo) = "" Then
    MsgBox "Arquivo não encontrado: " & arquivo
    Exit Sub
End If

Workbooks.Open arquivo

End Sub

A função Dir verifica se o arquivo existe antes mesmo de tentar abri-lo — se ela retornar texto vazio, o arquivo não foi encontrado naquele caminho. Essa validação evita a mensagem de erro padrão do VBA, que costuma confundir quem não conhece programação, e permite mostrar uma mensagem mais clara para o usuário. Para um tratamento de erro mais completo, incluindo os comandos On Error Resume Next e On Error GoTo, veja o nosso artigo sobre como tratar erros no VBA do Excel.

Abrir um arquivo somente para leitura

Quando você só precisa consultar dados de outro arquivo, sem correr o risco de alguém salvar alterações nele por engano, abra o arquivo em modo somente leitura usando o segundo parâmetro do Workbooks.Open:

Sub Abrir_Arquivo_Somente_Leitura()

Workbooks.Open Filename:="C:\nome_do_arquivo.xlsx", ReadOnly:=True

End Sub

Com ReadOnly:=True, o Excel abre o arquivo bloqueado para edição — se alguém tentar salvar, o Excel vai pedir para salvar com outro nome, protegendo o arquivo original.

Fechar o arquivo depois de usar

Se a sua macro abre um arquivo só para copiar dados dele e depois não precisa mais dele aberto, é uma boa prática fechar o arquivo automaticamente ao final, para não deixar várias pastas de trabalho abertas sem necessidade:

Sub Abrir_E_Fechar_Arquivo()

Dim wb As Workbook
Set wb = Workbooks.Open("C:\nome_do_arquivo.xlsx")

'aqui você faria alguma operação com os dados do arquivo "wb"

wb.Close SaveChanges:=False

End Sub

O parâmetro SaveChanges:=False fecha o arquivo sem salvar nenhuma alteração feita durante a execução da macro — use True se quiser salvar antes de fechar.

Perguntas frequentes

O que acontece se eu tentar abrir com VBA um arquivo que não existe no caminho informado?

O VBA gera um erro em tempo de execução (erro 1004, geralmente) e a macro para de funcionar. Para evitar isso, verifique antes com a função Dir(caminho) — se ela retornar vazio, o arquivo não existe nesse caminho.

Como abrir um arquivo Excel como somente leitura usando VBA?

Use o parâmetro ReadOnly:=True dentro do Workbooks.Open, assim: Workbooks.Open Filename:=”caminho”, ReadOnly:=True. O arquivo abre bloqueado para edição, evitando que alguém salve alterações por engano.

Como fecho um arquivo que abri com o VBA sem precisar fazer isso manualmente?

Guarde a referência do arquivo aberto em uma variável do tipo Workbook (Set wb = Workbooks.Open(…)) e use wb.Close SaveChanges:=False ao final da macro para fechar sem salvar, ou SaveChanges:=True para salvar antes de fechar.

Se você curtiu esse tutorial, se inscreva para receber o nosso curso gratuito de VBA, assim como as nossas novidades.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *