Este guia irá apresentá-lo a trabalhar com o Objeto de pasta de trabalho em VBA.
O objeto da pasta de trabalho
Primeiro, para interagir com pastas de trabalho no VBA, você deve entender o Objeto de pasta de trabalho.
Com o objeto de pasta de trabalho, você pode fazer referência a pastas de trabalho por seus nomes, como este:
1 | Pastas de trabalho ("Livro2.xlsm"). Ative |
No entanto, esse código só funcionará se a pasta de trabalho estiver aberta. Se a pasta de trabalho estiver fechada, você precisará fornecer o caminho completo da pasta de trabalho:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Em vez de digitar o caminho completo, se a pasta de trabalho desejada estiver no mesmo diretório da pasta de trabalho onde seu código está armazenado, você pode usar este código de linha para abrir a pasta de trabalho:
1 | Workbooks.Open (ThisWorkbook.Path & "\ book2.xlsm") |
Isso faz uso do objeto ThisWorkbook que discutiremos na próxima seção.
Número de índice da pasta de trabalho
Por último, você pode fazer referência a pastas de trabalho por seu “Número de índice”. O número de índice de uma pasta de trabalho corresponde à ordem em que a pasta de trabalho foi aberta (tecnicamente, é a posição da pasta de trabalho na Coleção de Pastas de Trabalho).
1 | Pastas de trabalho (1). Ativar |
Isso é útil se você quiser fazer algo como fechar a primeira (ou a última) pasta de trabalho aberta.
Activate Workbook, ActiveWorkbook e ThisWorkbook
Se uma pasta de trabalho é NÃO ATIVO, você pode acessar os objetos da pasta de trabalho como este:
1 | Pastas de trabalho ("Livro2.xlsm"). Folhas ("Folha1"). Intervalo ("A1"). Valor = 1 |
No entanto, se a pasta de trabalho estiver ativa, você pode omitir o objeto da pasta de trabalho:
1 | Folhas ("Folha1"). Intervalo ("A1"). Valor = 1 |
E se quiser interagir com a planilha ativa da pasta de trabalho, você também pode omitir o objeto de planilhas:
1 | Intervalo ("A1"). Valor = 1 |
Ativar pasta de trabalho
Para ativar uma pasta de trabalho, use o Método de ativação.
1 | Pastas de trabalho ("Livro2.xlsm"). Ative |
Agora você pode interagir com o objeto de Book2 sem declarar explicitamente o nome da pasta de trabalho.
ActiveWorkbook
o ActiveWorkbook objeto sempre se refere à pasta de trabalho ativa. Isso é útil se você deseja atribuir o ActiveWorkbook a uma variável para usar mais tarde.
12 | Dim wb como pasta de trabalhoDefinir wb = ActiveWorkbook |
ThisWorkbook
o ThisWorkbook objeto sempre se refere à pasta de trabalho onde o código em execução está armazenado. Para ativar ThisWorkbook, use esta linha de código:
1 | ThisWorkbook.Activate |
Abra a pasta de trabalho
Para abrir uma pasta de trabalho, use o Método Aberto:
1 | Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
A pasta de trabalho recém-aberta sempre se tornará o ActiveWorkbook, permitindo que você interaja facilmente com ele.
1 | ActiveWorkbook.Save |
O Open Method tem vários outros argumentos, permitindo que você abra somente leitura, abra uma pasta de trabalho protegida por senha e muito mais. Isso é abordado aqui em nosso artigo sobre Pastas de Trabalho de Abertura / Fechamento.
Abrir e atribuir a variável
Você também pode abrir uma pasta de trabalho e atribuí-la a uma variável ao mesmo tempo:
12 | Dim wb como pasta de trabalhoDefina wb = Workbooks.Open ("C: \ Users \ StevePC2 \ Downloads \ book2.xlsm") |
Abrir caixa de diálogo de arquivo
Você também pode acionar a caixa de diálogo Abrir arquivo assim:
12345678 | Sub OpenWorkbook ()Dim strFile As StringstrFile = Application.GetOpenFilename ()Workbooks.Open (strFile)End Sub |
Criar nova (adicionar) pasta de trabalho
Esta linha de código criará uma nova pasta de trabalho:
1 | Workbooks.Add |
A nova pasta de trabalho agora se torna o ActiveWorkbook, permitindo que você interaja com ele (por exemplo, salve a nova pasta de trabalho).
Adicionar nova pasta de trabalho à variável
Você também pode adicionar uma nova pasta de trabalho diretamente a uma variável:
12 | Dim wb como pasta de trabalhoDefinir wb = Workbooks.Add |
Fechar pasta de trabalho
Fechar e salvar
Para fechar uma pasta de trabalho com salvamento, use o Método de fechamento com SaveChanges definido como TRUE:
1 | ActiveWorkbook.Close SaveChanges: = True |
Fechar sem salvar
Para fechar sem salvar, defina SaveChanges igual a FALSE:
1 | ActiveWorkbook.Close SaveChanges: = False |
Livro de trabalho salvar como
o Método SaveAs é usado para salvar uma pasta de trabalho como.
Para salvar uma pasta de trabalho com um novo nome, no mesmo diretório, você pode sugerir usar isto:
1 | ActiveWorkbook.SaveAs "novo" |
onde “novo” é o novo nome do arquivo.
Para salvar uma pasta de trabalho em um novo diretório com uma extensão de arquivo específica, basta especificar o novo diretório e o nome do arquivo:
1 | ActiveWorkbook.SaveAs "C: \ Users \ StevePC2 \ Downloads \ new.xlsm" |
Outros exemplos de pasta de trabalho VBA
Nome da pasta de trabalho
Para obter o nome de uma pasta de trabalho:
1 | MsgBox ActiveWorkbook.Name |
Proteger a pasta de trabalho
Para proteger a estrutura da pasta de trabalho da edição, você pode usar o Método de Proteção (senha opcional):
1 | Pastas de trabalho ("book1.xlsm"). Proteger "senha" |
Para desproteger uma pasta de trabalho, use o Método UnProtect:
1 | Pastas de trabalho ("book1.xlsm"). Desproteger "senha" |
Percorrer todas as pastas de trabalho abertas
Para percorrer todas as pastas de trabalho abertas:
123456789 | Sub LoopThroughWBs ()Dim wb como pasta de trabalhoPara cada wb nas pastas de trabalhoMsgBox wb.NamePróximo wbEnd Sub |
Evento de ativação da pasta de trabalho
Você pode executar algum código sempre que uma pasta de trabalho específica for aberta com o Evento de abertura da pasta de trabalho.
Coloque este procedimento no Módulo ThisWorkbook da sua pasta de trabalho:
123 | Sub Workbook_Open ()Planilhas ("planilha1"). AtiveEnd Sub |
Este procedimento irá ativar Folha1 toda vez que a pasta de trabalho é aberta.