Selecionar o livro de trabalho utilizando o VBA
Esta página mostra como pode atribuir um livro de trabalho aberto a uma variável Workbook
utilizando uma instrução Set
.
Esta é a forma preferida de programar, em vez de utilizar ActiveWorkbook
(utilizando Select
).
Selecionar o livro de trabalho pelo nome
A propriedade Item
da coleção Workbooks
é utilizada para devolver um único objeto Workbook
da coleção. É chamada desta forma:
Dim wb As Workbook
Set wb = Application.Workbooks.Item(Index:="Demo.xlsx")
Workbook
a selecionar já está aberta no Excel.
A coleção Workbooks
é aqui obtida a partir do procedimento Application.Workbooks
.
O procedimento Item
devolve um objeto do tipo Workbook
que é opcionalmente atribuído a uma variável wb
.
Normalmente, em Index
utiliza-se o nome do ficheiro para identificar, embora, em rigor, se possa utilizar o número de posição na coleção.
... ou mais curto:
Dim wb As Workbook
Set wb = Workbooks("Demo.xlsx")
- Porque o
Application.Workbooks
método é globalApplication
pode ser omitido da declaração. - Uma prática comum com itens de coleção é a utilização de uma abreviatura: Em vez da palavra completa
collection.Item(...)
o mais curtocollection(...)
é utilizado. - Como não torna as coisas mais claras, também deixamos de fora o
Item
nome do parâmetro(Index:=...)
Selecionar o livro de trabalho com o nome da variável
Na maioria das vezes, o utilizador pretende aplicar os seus procedimentos a nomes de ficheiros variáveis.
Para tal, utilizará uma variável String
à qual será atribuído um valor de alguma forma, por exemplo, utilizando uma caixa de diálogo de seleção de ficheiros.
Dim strWorkbook As String: strWorkbook =
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Selecionar o livro de trabalho e a folha
Normalmente, o utilizador pretende agir sobre uma folha de cálculo no livro de trabalho. Segue-se um exemplo de como o fazer. Consulte também Selecionar folha de trabalho utilizando VBA.
Dim strWorkbook As String: strWorkbook = "Demo.xlsx"
Dim wb As Workbook
Set wb = Workbooks(strWorkbook)
Dim ws As Worksheet
Set ws = wb.Worksheets("Data")