VBA – ActiveWorkbook versus ThisWorkbook

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Daniel Caramello

Last updated on July 11, 2023

Este tutorial abordará a diferença entre os objetos ActiveWorkbook e ThisWorkbook do VBA.

ActiveWorkbook versus ThisWorkbook

É importante saber a diferença entre o ActiveWorkbook e o ThisWorkbook no VBA:

O ActiveWorkbook é a pasta de trabalho que está ativa no momento (semelhante ao ActiveSheet, que é a planilha ativa no momento). ThisWorkbook é a pasta de trabalho em que o código VBA está armazenado. ThisWorkbook nunca será alterado.

ThisWorkbook

Pense em ThisWorkbook como uma variável de objeto que lhe permite fazer referência à pasta de trabalho que contém o código em execução no momento.

Esse código exibirá uma MessageBox com o nome ThisWorkbook:

Sub Mostrar_ThisWorkbook()
    MsgBox ThisWorkbook.Name
End Sub

vba thisworkbook activeworkbook

ActiveWorkbook

O ActiveWorkbook é uma variável de objeto que permite fazer referência à pasta de trabalho ativa no momento.

Esse código exibirá uma MessageBox com o nome ActiveWorkbook:

Sub Mostrar_ActiveWorkbook()
    MsgBox ActiveWorkbook.Name
End Sub

O VBA Assume o ActiveWorkbook

Ao tentar trabalhar com objetos (por exemplo, planilhas) dentro do ActiveWorkbook, não é necessário indicar explicitamente o objeto ActiveWorkbook. O VBA assumirá que você está se referindo ao ActiveWorkbook.

Assim:

ActiveWorkbook.Sheets("Planilha1").Range("$A$5").Value = 1

É o mesmo que:

Sheets("Planilha1").Range("$A$5").Value = 1

Pastas de Trabalho Novas ou Abertas são Ativas

Sempre que você cria uma nova pasta de trabalho ou abre uma pasta de trabalho, ela se torna “ativa”. Você pode ver por si mesmo com este código que adicionará uma pasta de trabalho e recuperará o nome da nova pasta de trabalho:

Sub Mostrar_ActiveWorkbook_Adicionar()
    Workbooks.Add
    MsgBox ActiveWorkbook.Name
End Sub

Depois de adicionar ou abrir uma pasta de trabalho, você pode atribuí-la a uma variável usando o objeto ActiveWorkbook. Mostraremos como fazer isso nos exemplos a seguir:

Exemplos de ThisWorkbook e ActiveWorkbook

Alternar a Pasta de Trabalho Ativa

Troque a pasta de trabalho ativa usando o nome da pasta de trabalho:

Workbooks("Pasta1").Activate

Alternar a pasta de trabalho ativa usando um índice como número de ordem da pasta de trabalho (1 é a primeira pasta de trabalho aberta ou criada):

Workbooks(1).Activate

Tornar ThisWorkbook Ativa

Tornar ThisWorkbook (onde o código em execução no momento está armazenado) a ActiveWorkbook:

ThisWorkbook.Activate

Definir ActiveWorkbook como uma Variável

Atribua o ActiveWorkbook a uma variável de objeto da pasta de trabalho:

Dim wb As Workbook
Set wb = ActiveWorkbook

Fechar e Salvar a Pasta de Trabalho Ativa

Fecha e salva o ActiveWorkbook:

ActiveWorkbook.Close SaveChanges:=True

Fechar a Pasta de Trabalho Ativa Sem Salvar

Fecha o ActiveWorkbook sem salvar:

ActiveWorkbook.Close SaveChanges:=False

ActiveWorkbook – Salvar Como

Executa um Salvar Como da pasta de trabalho ativa.

Sub SalvarComosActiveWorkbook()
    Dim resultado As Variant
    resultado = Application.GetSaveAsFilename(InitialFileName:="", _
    FileFilter:="Excel Macro-Enabled Workbook (*.xlsm), *.xlsm,Excel Workbook (*.xlsx), *.xlsx")
    
    If resultado = False Then Exit Sub
    
    ActiveWorkbook.SaveAs resultado
End Sub
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