Neste tutorial, você aprenderá como usar o VBA para abrir e fechar a pasta de trabalho do Excel de várias maneiras.
O VBA permite que você abra ou feche arquivos usando os métodos padrão .Abrir e .Fechar.
Se você quiser saber como verificar se um arquivo existe antes de tentar abri-lo, você pode clicar neste link: Arquivo VBA existe
Abra uma pasta de trabalho no VBA
Abra a pasta de trabalho do caminho
Se você souber qual arquivo deseja abrir, poderá especificar o nome do caminho completo na função. Aqui está o código:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx" |
Esta linha do código abre o arquivo “Sample file 1” da “VBA Folder”.
Open Workbook - ActiveWorkbook
Quando você abre uma pasta de trabalho, ela se torna automaticamente a ActiveWorkbook. Você pode consultar a pasta de trabalho recém-aberta da seguinte maneira:
1 | ActiveWorkbook.Save |
Quando você faz referência a uma planilha ou intervalo e omite o nome da pasta de trabalho, o VBA presumirá que você está se referindo à ActiveWorkbook:
1 | Folhas ("Folha1"). Nome = "Entrada" |
Abra a pasta de trabalho e atribua a uma variável
Você também pode abrir uma pasta de trabalho e atribuí-la diretamente a uma variável de objeto. Este procedimento irá abrir uma pasta de trabalho para o wb variável e, em seguida, salve a pasta de trabalho.
123456 | Sub OpenWorkbookToVariable ()Dim wb como pasta de trabalhoSet wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx")wb.SaveEnd Sub |
Atribuir pastas de trabalho a variáveis quando elas são abertas é a melhor maneira de controlar suas pastas de trabalho
Diálogo de Arquivo Aberto da Pasta de Trabalho
Você também pode acionar a caixa de diálogo Abrir arquivo da pasta de trabalho. Isso permite que o usuário navegue até um arquivo e o abra:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)End Sub |
Como você pode ver na Imagem 1, com esta abordagem os usuários podem escolher qual arquivo abrir. A caixa de diálogo Abrir arquivo pode ser bastante personalizada. Você pode usar como padrão uma determinada pasta, escolher quais tipos de arquivos são visíveis (por exemplo, xlsx apenas) e muito mais. Leia nosso tutorial na caixa de diálogo Abrir arquivo para exemplos detalhados.
Abra uma nova pasta de trabalho
Esta linha de código abrirá uma nova pasta de trabalho:
1 | Workbooks.Add |
Abra a nova pasta de trabalho para a variável
Este procedimento abrirá uma nova pasta de trabalho, atribuindo-a à variável wb:
1234 | Sub OpenNewWorkbook ()Dim wb como pasta de trabalhoDefinir wb = Workbooks.AddEnd Sub |
Sintaxe da pasta de trabalho aberta
Ao usar Workbooks.Open, você notará 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á saber a maioria dos outros argumentos. Aqui estão os dois mais comuns:
Abrir pasta de trabalho somente leitura
Quando a pasta de trabalho é aberta como somente leitura, você não pode salvar sobre o arquivo original. Isso evita que o arquivo seja editado pelo usuário.
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",, True |
Abra a pasta de trabalho protegida por senha
Uma pasta de trabalho pode ser protegida por senha. Use este código para abrir a pasta de trabalho protegida por senha:
1 | Workbooks.Open "C: \ VBA Folder \ Sample file 1.xlsx",,, "password" |
Abra as notas de sintaxe da 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:
1234 | Sub OpenWB ()Dim wb como pasta de trabalhoSet wb = Workbooks.Open ("C: \ VBA Folder \ Sample file 1.xlsx", True, True)End Sub |
Fechar uma pasta de trabalho no VBA
Fechar pasta de trabalho específica
Da mesma forma que abrir uma pasta de trabalho, existem várias maneiras de fechar um arquivo. Se você souber qual arquivo deseja fechar, poderá usar o seguinte código:
1 | Workbooks.Close ("C: \ VBA Folder \ Sample file 1.xlsx") |
Esta linha de código fecha o arquivo "Arquivo de amostra 1" se ele estiver aberto. Caso contrário, ele retornará um erro, portanto, você deve cuidar do tratamento de erros.
Fechar pasta de trabalho ativa
Se você deseja fechar a pasta de trabalho que está ativa no momento, esta linha de código permitirá que você faça isso:
1 | ActiveWorkbook.Close |
Fechar todas as pastas de trabalho abertas
Para fechar todas as pastas de trabalho abertas, você pode simplesmente usar este código:
1 | Workbooks.Close |
Fechar a primeira pasta de trabalho aberta
Isso fechará a primeira pasta de trabalho aberta / criada:
1 | Cadernos de exercícios (1). Fechar |
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 para salvar:
1 | ActiveWorkbook.Close savechanges: = False |
Salvar e fechar sem aviso
Da mesma forma, isso salvará e fechará uma pasta de trabalho sem mostrar o prompt para salvar:
1 | ActiveWorkbook.Close savechanges: = True |
Nota: Existem várias outras maneiras de indicar se deseja salvar ou não uma pasta de trabalho e também se deve mostrar prompts ou não. Isso é discutido com mais detalhes aqui.
Outros exemplos abertos de pasta de trabalho
Abra várias novas pastas de trabalho
Este procedimento abrirá várias novas pastas de trabalho, atribuindo as novas pastas de trabalho a uma matriz:
12345678 | Sub OpenMultipleNewWorkbooks ()Dim arrWb (3) como pasta de trabalhoDim i As IntegerPara i = 1 a 3Defina arrWb (i) = Workbooks.AddProximo euEnd Sub |
Abra todas as pastas de trabalho do Excel em uma pasta
Este procedimento abrirá todas as pastas de trabalho do Excel em uma pasta, usando o seletor Abrir caixa de diálogo de arquivo.
12345678910111213141516 | Sub OpenMultipleWorkbooksInFolder ()Dim wb como pasta de trabalhoDim dlgFD As FileDialogDim strFolder As StringDim strFileName As StringDefina dlgFD = Application.FileDialog (msoFileDialogFolderPicker)Se dlgFD.Show = -1 EntãostrFolder = dlgFD.SelectedItems (1) & Application.PathSeparatorstrFileName = Dir (strFolder & "* .xls *")Do While strFileName ""Definir wb = Workbooks.Open (strFolder & strFileName)strFileName = DirCicloFim seEnd Sub |
Verifique se uma pasta de trabalho está aberta
Este procedimento testará se uma pasta de trabalho está aberta:
1234567891011 | Sub TestByWorkbookName ()Dim wb como pasta de trabalhoPara cada wb nas pastas de trabalhoSe wb.Name = "New Microsoft Excel Worksheet.xls" EntãoMsgBox "Encontrei"Sair do código de chamada Sub 'aqui, vamos apenas sair por agoraFim sePróximoEnd Sub |
Workbook_Open Event
Os eventos do VBA são “gatilhos” 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 muito mais.
Leia nosso tutorial Workbook_Open Event para saber mais sobre a execução automática de macros quando uma pasta de trabalho é aberta.