VBA – Trabalhando com Pastas de Trabalho (Objeto Workbook)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on August 15, 2023

Este guia irá introduzi-lo a trabalhar com o Objeto Workbook no VBA.

O Objeto Workbook

Primeiro, para interagir com o pastas de trabalho (workbooks) no VBA, você precisa entender o Objeto Workbook.

Com o objeto workbook, você pode referenciar pastas de trabalho pelo seus nomes, como no exemplo abaixo:

Workbooks("Pasta2.xlsm").Activate

Entretanto, este código irá funcionar apenas se a pasta de trabalho estiver aberta. Se a pasta de trabalho estiver fechada, você precisará fornecer o caminho completo. Exemplo:

Workbooks.Open ("C:\Usuários\JoãoPC2\Downloads\Pasta2.xlsm")

Ao invés de digitar o caminho completo, se a pasta de trabalho desejada estiver no mesmo diretório que a pasta de trabalho onde seu código está sendo executado, você pode também utilizar a linha código abaixo para abrir a pasta de trabalho:

Workbooks.Open (ThisWorkbook.Path & "\Pasta2.xlsm")

O exemplo acima faz uso do objeto ThisWorkbook que iremos discutir na próxima secção.

Número do Índice da Pasta de Trabalho (Workbook Index Number)

Por fim, você pode referenciar pastas de trabalho através de seus “Número de Índice”. O número de índice de uma pasta de trabalho corresponde à ordem na qual a pasta de trabalho foi aberta (tecnicamente, é a posição da pasta de trabalho na Coleção Workbooks).

Workbooks(1).Activate

Isto é especialmente útil caso você queira fazer algo como fechar a primeiro (ou a última, por exemplo) pasta de trabalho aberta.

Ativar Workbook, ActiveWorkbook e ThisWorkbook

Se uma pasta de trabalho NÃO ESTÁ ATIVA, você pode acessar os objetos dessa pasta de trabalho da seguinte forma:

Workbooks("Pasta2.xlsm").Sheets("Planilha1").Range("A1").value = 1

Entretanto, se a pasta de trabalho estiver Ativa, você pode omitir a referência ao objeto Workbook:

Sheets("Planilha1").Range("A1").value = 1

E se você quiser interagir com a planilha ativa da pasta de trabalho, você pode também omitir o objeto Sheets (Planilhas):

Range("A1").value = 1

Ativando Uma Pasta de Trabalho (Workbook)

Para Ativar uma pasta de trabalho, use o Método Activate.

Workbooks("Pasta2.xlsm").Activate

Agora você pode interagir com os objetos do pasta de trabalho “Pasta2” sem explicitamente referenciar o nome dela.

ActiveWorkbook

O objeto ActiveWorkbook sempre irá fazer referência à pasta de trabalho ativa. Isto é útil caso você queira atribuir o ActiveWorkbook a uma variável para usar posteriormente no seu código

Dim wb As Workbook
Set wb = ActiveWorkbook

ThisWorkbook

O objeto ThisWorkbook sempre irá fazer referência à pasta de trabalho onde o código está sendo executado. Para Ativar o ThisWorkbook, use a seguinte linha de código:

ThisWorkbook.Activate

Abrir um Workbook (Pasta de Trabalho)

Para abrir uma pasta de trabalho, use o Método Open:

Workbooks.Open ("C:\Usuários\JoãoPC2\Downloads\Pasta2.xlsm")

A recém-aberta pasta de trabalho sempre se tornará o ActiveWorkbook, permitindo-lhe interagir com ela facilmente.

ActiveWorkbook.Save

O Método Open tem vários outros argumentos, permitindo-lhe, por exemplo, abrir uma pasta de trabalho em modo somente leitura, abrir uma pasta de trabalho protegida por senha, entre outras possibilidades. Isto é detalhado aqui em nosso artigo Abrindo / Fechando Pastas de Trabalho.

Abrir e Atribuir à Variável

Você pode também abrir uma pasta de trabalho e atribuí-la a uma variável ao mesmo tempo:

Dim wb As Workbook
Set wb = Workbooks.Open("C:\Usuários\JoãoPC2\Downloads\Pasta2.xlsm")

Caixa de Diálogo Abrir Arquivo

Você pode também acionar a Caixa de Diálogo Abrir Arquivo como abaixo:

Sub AbrirPastaDeTrabalho()
 
    Dim strArquivo As String
 
    strArquivo = Application.GetOpenFilename()
    Workbooks.Open (strArquivo )
 
End Sub

vba open close file

Criar Nova (Adicionar) Pasta de Trabalho

Esta linha de código irá criar uma Nova Pasta de Trabalho:

Workbooks.Add

A nova pasta de trabalho agora se torna o ActiveWorkbook, lhe permitindo interagir com ela (exemplo: salvar a nova pasta de trabalho).

Adicionar a Nova Pasta de Trabalho à Variável

Você também pode adicionar uma nova pasta de trabalho diretamente à uma variável:

Dim wb As Workbook
Set wb = Workbooks.Add

Fechar uma Pasta de Trabalho

Fechar & Salvar

Para fechar uma pasta de trabalho e efetuar o salvamento, utilize o Método Close com o parâmetro SaveChanges definido com TRUE:

ActiveWorkbook.Close SaveChanges:=True

Fechar sem Salvar

Para fechar sem salvar, defina o parâmetro SaveChanges como FALSE:

ActiveWorkbook.Close SaveChanges:=False

Salvar Como

O Método SaveAs é utilizado para Salvar Como uma pasta de trabalho.

Para salvar a pasta de trabalho com um novo nome, no mesmo diretório, você pode simplesmente utilizar utilizar o código abaixo:

ActiveWorkbook.SaveAs "NomeExemplo"

Onde “NomeExemplo” será o nome do novo arquivo.

Para salvar a 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:

ActiveWorkbook.SaveAs "C:\Usuários\JoãoPC2\Downloads\NomeExemplo.xlsm"

Outros Exemplo de Interação VBA com Pastas de Trabalho

Workbook Name

Para obter o nome de uma pasta de trabalho:

MsgBox ActiveWorkbook.Name

Proteger Pasta de Trabalho

Para proteger de uma eventual edição a estrutura da pasta de trabalho, você pode utilizar o Método Protect (senha é opcional):

Workbooks("pasta1.xlsm").Protect "SuaSenhaAqui"

Para desproteger a pasta de trabalho, use o Método UnProtect:

Workbooks("pasta1.xlsm").Unprotect "SuaSenhaAqui"

Loop Através de Todas as Pasta de Trabalho Abertas

Para percorrer (loop) através de todas as pastas de trabalho abertas:

Sub LoopAtravesWorkbooks()
    
    Dim wb As Workbook
    
    For Each wb In Workbooks
        MsgBox wb.Name
    Next wb

End Sub

Evento Open (Abrir) da Pasta de Trabalho

Como o Workbook Open Event, você pode executar um código sempre que uma pasta de trabalho específica for aberta.

Coloque o procedimento abaixo no módulo de sua pasta de trabalho chamado “EstaPastaDeTrabalho”:

Private Sub Workbook_Open()
    Sheets("Planilha1").Activate
End Sub

Este procedimento irá ativar a Planilha1 toda vez que a pasta de trabalho for aberta.

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