VBA – Abrir/Fechar Pasta de Trabalho

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on June 22, 2023

Neste tutorial, você aprenderá a usar o VBA para abrir e fechar pastas de trabalho do Excel e outros tipos de arquivos de várias maneiras.

O VBA permite que você abra ou feche arquivos usando os métodos padrão .Open e .Close.

Se você quiser saber como verificar se um arquivo existe antes de tentar abri-lo, você pode clicar neste link: Existência de arquivo VBA

Abrir uma Pasta de Trabalho no VBA

Abrir Pasta de Trabalho a Partir do Caminho

Se você souber qual arquivo deseja abrir, poderá especificar o nome completo do caminho na função. Aqui está o código:

Workbooks.Open "C:\VBA Folder\Arquivo Exemplo 1.xlsx"

Esta linha do código abre o arquivo “Arquivo Exemplo 1” da pasta “VBA Folder”.

Abrir Pasta de Trabalho – ActiveWorkbook

Quando você abre uma pasta de trabalho, ela se torna automaticamente a ActiveWorkbook. Você pode fazer referência à pasta de trabalho recém-aberta da seguinte forma:

ActiveWorkbook.Save

Ao fazer referência a uma planilha ou intervalo e omitir o nome da pasta de trabalho, o VBA presumirá que você está se referindo à ActiveWorkbook:

Sheets("Planilha1").Name = "Entrada"

Abrir Pasta de Trabalho e Atribuir a uma Variável

Também é possível abrir uma pasta de trabalho e atribuí-la diretamente a uma variável de objeto. Este procedimento abrirá uma pasta de trabalho para a variável wb e, em seguida, salvará a pasta de trabalho.

Sub AbrirPastaParaVariavel()
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\VBA Folder\Arquivo Exemplo 1.xlsx")

    wb.Save
End Sub

Atribuir pastas de trabalho a variáveis quando elas são abertas é a melhor maneira de manter o controle de suas pastas de trabalho.

 

Caixa de Diálogo Abrir Arquivo Pasta de Trabalho

Você também pode acionar a caixa de diálogo Open File Dialog da pasta de trabalho. Isso permite que o usuário navegue até um arquivo e o abra:

Sub AbrirPastaDeTrabalho()

    Dim strFile As String

    strFile = Application.GetOpenFilename()
    Workbooks.Open (strFile)

End Sub

caixa dialogo abrir

Como você pode ver na Imagem 1, com essa abordagem, os usuários podem escolher qual arquivo abrir. A caixa de diálogo Abrir arquivo pode ser altamente personalizada. Você pode usar como padrão uma determinada pasta, escolher quais tipos de arquivos são visíveis (por exemplo, somente .xlsx) e muito mais. Leia nosso tutorial sobre a caixa de diálogo Abrir arquivo para obter exemplos detalhados.

Abrir Nova Pasta de Trabalho

Essa linha de código abrirá uma nova pasta de trabalho:

Workbooks.Add

Abrir Nova Pasta de Trabalho para Variável

Esse procedimento abrirá uma nova pasta de trabalho, atribuindo-a à variável wb:

Sub AbrirNovaPastaDeTrabalho()
    Dim wb As Workbook
    Set wb = Workbooks.Add
End Sub

Sintaxe de Abertura de Pasta de Trabalho

Quando você usa Workbooks.Open, pode perceber que há muitas opções disponíveis ao abrir a pasta de trabalho:

opcoes abrir pasta

O nome do arquivo é obrigatório. Todos os outros argumentos são opcionais – e você provavelmente não precisará conhecer a maioria deles. Aqui estão os dois mais comuns:

Abrir a Pasta de Trabalho Somente para Leitura

Quando a pasta de trabalho é aberta somente para leitura, não é possível salvar sobre o arquivo original. Isso impede que o arquivo seja editado pelo usuário.

Workbooks.Open "C:\VBA Folder\Arquivo Exemplo 1.xlsx", , True

Abrir Pasta de Trabalho Protegida por Senha

Uma pasta de trabalho pode estar protegida por senha. Use esse código para abrir a pasta de trabalho protegida por senha:

Workbooks.Open "C:\VBA Folder\Arquivo Exemplo 1.xlsx", , , "senha"

Notas de Sintaxe  para Abrir Pasta de Trabalho

Observe que, na imagem acima, incluímos um parêntese “(” para mostrar a sintaxe. Se você usar parênteses ao trabalhar com Workbooks.Open, deverá atribuir a pasta de trabalho a uma variável:

Sub AbrirPasta()
    Dim wb As Workbook
    Set wb = Workbooks.Open("C:\VBA Folder\Arquivo Exemplo 1.xlsx", True, True)
End Sub

Fechar uma Pasta de Trabalho no VBA

Fechar uma Pasta de Trabalho Específica

Da mesma forma que para abrir uma pasta de trabalho, há várias maneiras de fechar um arquivo. Se você souber qual arquivo deseja fechar, poderá usar o código a seguir:

Workbooks.Close ("C:\VBA Folder\Arquivo Exemplo 1.xlsx")

Essa linha de código fecha o arquivo “Arquivo Exemplo 1” se ele estiver aberto. Caso contrário, ela retornará um erro, portanto, você deve cuidar do tratamento de erros.

Fechar a Pasta de Trabalho Ativa

Se quiser fechar a pasta de trabalho que está ativa no momento, essa linha de código permitirá que você faça isso:

ActiveWorkbook.Close

Fechar Todas as Pastas de Trabalho Abertas

Para fechar todas as pastas de trabalho abertas, basta usar este código:

Workbooks.Close

Fechar a Primeira Pasta de Trabalho Aberta)

Isso fechará a primeira pasta de trabalho aberta/criada:

Workbooks(1).Close

Substitua 1 por 2 para fechar a segunda pasta de trabalho aberta/criada e assim por diante.

Fechar Sem Salvar

Isso fechará uma pasta de trabalho sem salvar e sem mostrar o prompt de salvamento:

ActiveWorkbook.Close savechanges:=False

Salvar e Fechar Sem Prompt

Da mesma forma, isso salvará e fechará uma pasta de trabalho sem mostrar o prompt de salvamento:

ActiveWorkbook.Close savechanges:=True

Observação: Há várias outras maneiras de indicar se uma pasta de trabalho deve ser salva ou não e também se os prompts devem ser exibidos ou não. Isso é discutido em mais detalhes aqui.

Outros Exemplos de Abertura de Pasta de Trabalho

Abrir Várias Novas Pastas de Trabalho

Este procedimento abrirá várias novas pastas de trabalho, atribuindo-as a uma matriz:

Sub AbrirVariasPastasNovas()
    Dim arrWb(3) As Workbook
    Dim i As Integer
    
    For i = 1 To 3
        Set arrWb(i) = Workbooks.Add
    Next i
End Sub

Abrir Todas as Pastas de Trabalho do Excel em Uma Pasta

Esse procedimento abrirá todas as pastas de trabalho do Excel em uma pasta, usando o seletor Open File Dialog.

Sub AbrirVariasPastasNoDiretorio()
    Dim wb As Workbook
    Dim dlgFD As FileDialog
    Dim strFolder As String
    Dim strFileName As String
    Set dlgFD = Application.FileDialog(msoFileDialogFolderPicker)
    If dlgFD.Show = -1 Then
        strFolder = dlgFD.SelectedItems(1) & Application.PathSeparator
        strFileName = Dir(strFolder & "*.xls*")
        Do While strFileName <> ""
            Set wb = Workbooks.Open(strFolder & strFileName)
            
            strFileName = Dir
        Loop
    End If
End Sub

Verificar se uma Pasta de Trabalho Está Aberta

Esse procedimento testará se uma pasta de trabalho está aberta:

Sub TestarPorNomePasta()
Dim wb As Workbook
 
    For Each wb In Workbooks
        If wb.Name = "Nova Pasta de Trabalho Microsoft Excel Worksheet" Then
            MsgBox "Encontrei"
            Exit Sub 'código de chamada aqui, vamos apenas sair por enquanto
        End If
    Next
 
End Sub

Evento Workbook_Open

Os eventos do VBA são “acionadores” que dizem ao VBA para executar determinado código. Você pode configurar eventos de pasta de trabalho para abrir, fechar, antes de salvar, depois de salvar e outros.

Leia nosso tutorial Workbook_Open Event para saber mais sobre como executar macros automaticamente quando uma pasta de trabalho é aberta.

Abrir Outros Tipos de Arquivos no VBA

Você pode usar o VBA para abrir outros tipos de arquivos, como arquivos txt ou Word.

Abrir um Arquivo de Texto e Ler seu Conteúdo

O método de abertura do VBA permite que você leia ou grave no arquivo depois de abri-lo. Para ler o conteúdo de um arquivo, podemos abrir o arquivo para INPUT.

Sub AbrirArquivoTexto()
   Dim strFile As String
   Dim strBody As String
   Dim intFile As Integer

   strFile = "C:\datateste.txt"
   intFile = FreeFile
   Open strFile For Input As intFile
   strBody = Input(LOF(intFile), intFile)
   'faça um loop aqui em seu corpo de texto e extraia o que você precisa
   ''algum código vba aqui
   Debug.Print strBody
   Close intFile
End Sub

O código acima abrirá o arquivo de texto “datateste.txt” e, em seguida, lerá todo o conteúdo do arquivo na variável strBody. Depois de extrair os dados do arquivo para a variável strBody, você poderá usá-los para o que precisar. O uso do comando Debug.Print acima nos permite ver o conteúdo da variável strBody na janela Verificação Imediata do VBE.

Abrir um Arquivo de Texto e Acrescentar Texto a Ele

Também podemos abrir um arquivo de texto no VBA e acrescentar texto ao final do arquivo usando o método Append.

Sub AcrescentarAoArquivoTexto()
Dim strFile As String
Dim strBody As String
Dim intFile As Integer

   strFile = "C:\datateste.txt"
   intFile = FreeFile
   Open strFile For Append As intFile
'adicionar duas linhas à parte inferior
   Print #intFile, "Esta é uma linha extra de texto na parte inferior"
   Print #intFile, "e esta é outra"
'fechar o arquivo
   Close intFile
End Sub

O código acima abrirá o arquivo de texto e anexará duas linhas de texto à parte inferior do arquivo usando a variável #intFile (o sinal # é a chave!). Em seguida, o código fecha o arquivo.

Abertura de um Arquivo do Word e Alteração Dele

Também podemos usar o VBA no Excel para abrir um arquivo do Word.

Sub AbrirArquivoWord()
   Dim wApp As Object
   Dim wDoc As Object
   Set wApp = CreateObject("Word.Application")
   Set wd = wApp.documents.Open("c:\datatest.docx")
   wApp.Visible = True
End Sub

Esse código abrirá uma cópia do Word e, em seguida, abrirá o documento test.docx.

vba-free-addin

Exemplos de Add-ins de Códigos VBA

Acesse facilmente todos os exemplos de código que se encontram em nosso site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(Nenhuma instalação necessária!)

Baixe de Graça

Retornar aos Exemplos de Códigos VBA