VBA – Abrir/Fechar Pasta de Trabalho
In this Article
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
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:
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.