Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

Mostrando postagens com marcador Series. Mostrar todas as postagens
Mostrando postagens com marcador Series. Mostrar todas as postagens

VBA Excel - 00.10 - Referenciando-se as planilhas - Workbooks



Modos de referenciar-se a um Worbook:


Tags: VBA, Excel, Series, reference, referenciando, workbook, worksheet

VBA Excel - 01.10 - Referenciando planilha - Active - Workbook ativo



Vamos relembrar um artigo antigo, agora revisado. Veremos 10 formas para referenciar workbooks e worksheets usando o VBA no MS Excel.

workbooks = Arquivo que contém todas as planilha em diversas pastas.

worksheets = Planilhas individuais, contidas nas abas.

1 - Active - Referenciando o workbook ativo

A propriedade do ActiveWorkbook faz referência ao workbook que tem o foco. 

Digamos que após atualizar a informação num workbook ativo, provavelmente deseje salvá-lo, esta é uma tarefa simples para a propriedade do ActiveWorkbook. A SUB a seguir utilizará a propriedade ActiveWorkbook  para fechar o workbook ativo:

Sub CloseActiveWBSemSalvar()
  ' Fecha o workbook ativo sem salvar.

  ActiveWorkbook.Close False
End Sub

Sub CloseActiveWBSalvando()
  'Fecha o workbook ativo e o salva.

  ActiveWorkbook.Close True
End Sub

Sub CloseActiveWBEscolheSeSalva()
  'Fecha o workbook ativo escolhendo se deseja salvar.
  'Deixa o usuário decidir se deseja salvar ou não.

  ActiveWorkbook.Close
End Sub

Sim, o exemplo foi apenas elucidativo, pode-se facilmente combinar estes três estado em uma única função passando o modo como a ação será executada através de parâmetros.

Abaixo segue outro exemplo onde o nome, o caminho são atribuidos:

Function GetActiveWBPathName() As String

  Let GetActiveWBPathName = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name

End Function


Tags: VBA, Excel, Series, reference, referenciando, workbook, worksheet, active workbook, active

VBA Excel - 02.10 - Referenciando planilha - Currently - Workbook executando o código




É sempre bom saber que:

workbooks = Arquivo que contém todas as planilha em diversas pastas.

worksheets = Planilhas individuais, contidas nas abas.

2 - Currently - Workbook executando o código

A propriedade para o ThisWorkbook é similar a propriedade ActiveWorkbook, mas...
ActiveWorkbook avaliará o workbook com foco, ThisWorkbook se referirá ao workbook que estiver rodando no momento.

Esforce-se para distinguir estes dois momentos. Sim este aparente pormenor acrescenta grande flexibilidade uma vez que o workbook ativo nem sempre é o workbook que está rodando o código.

Function GetThisWB() As String

              Let GetThisWB = ThisWorkbook.Path & "\" & ThisWorkbook.Name

End Function

Figura abaixo mostra o resultado da execução do procedimento:



Tags: VBA, Excel, Series, reference, referenciando, workbook, worksheet, thisworkbook, currently

VBA Excel - 03.10 - Referenciando planilha - Collection - Referenciando a coleção do Workbook



É sempre bom saber que:

workbooks = Arquivo que contém todas as planilha em diversas pastas.

worksheets = Planilhas individuais, contidas nas abas.


3 - Collection - Referenciando Workbooks na coleção

As coleções de Workbooks contém todos os objetos Workbooks que estão abertos. 

Para instanciá-lo, a seguinte SUB populará um listbox num formulário do usuário com os nomes de todos os workbooks abertos:

Private Sub UserForm_Activate()
  'Popula o listbox com os nomes dos workbooks abertos.

  Dim wb As Workbook
  
  For Each wb In Workbooks
    ListBox1.AddItem wb.Name
  Next wb

 End Sub

O FORM resultante é mostrado na Figura abaixo. perceba a listagem de todos os workbooks abertos. Ao utilizar a referência à coleção Workbooks, poderá referenciá-los sem "hard-coding", simplesmente o nome do workbook.


Para listar todos os workbooks abertos é uma tarefa fácil; agradeça isso a existência da Workbooks collection. Todavia abrir todos os workbooks numa pasta específica é uma tarefa dura, mas você poderá se beneficiar desta SUB:

Sub OpenAllwb()
  'Abre todos os workbooks numa pasta específica.

  Dim i As Integer

  With Application.FileSearch
  
    Let .LookIn = "C:\A&A"
    Let .FileType = msoFileTypeExcelWorkbooks
       ' Se houver workbooks.

      If .Execute > 0 Then
        For i = 1 To .FoundFiles.Count
          Workbooks.Open (.FoundFiles(i))
        Next i
  
      ' Caso não hajam workbooks       Else
        MsgBox "Não existem workbooks para acessar.", vbOKOnly
      End If
  End With
End Sub

Esta tarefa mostra o que pode ser feito com a coleção Workbooks. Neste caso o código não circula através da coleção Workbooks; antes tenta tirar vantagem de um dos métodos da coleção (collection) — especificamente, o método Open (abrir). 

Fechar todos os workbooks abertos é tão fácil como foi abrí-los, aplique a SUB abaixo:

Sub CloseAllWB()
  'Fecha todos workbooks abertos.
  Workbooks.Close
End Sub

Para visualizar mais métodos e propriedades de collection, pressionando F2 no VBE e naveguendo no Object Browser.


Tags: VBA, Excel, Series, reference, referenciando, workbook, worksheet, thisworkbook, collection, hard-coding

VBA Excel - 04.10 - Referenciando planilha - Explicit - Referência explícita a um workbook




É sempre bom lembrar-se de que:

workbooks = Arquivo que contém todas as planilha em diversas pastas.

worksheets = Planilhas individuais, contidas nas abas.


4 - Explicit - Referência explícita a um Workbook

Caso saiba o nome do workbook ao qual deseja fazer referência, uma referência explícita pode ser o melhor método. Para tanto lembre-se que precisará de um situação estável. Não poderá utilizar esta solução numa planilha onde o workbook muda de nome a todo momento. Mas, também possa passar o nome do workbook como referência através de uma função.

Function Activatewb (wbname As String)
  'Abre a variável wbname.

  Workbooks(wbname).Activate
End Function

A execução é simples, passe o nome do workbook que deseja ativar como argumento da função:

ActivateWB ("Alefe&BeteProcessamentodeDados.xlsb")
(Lembre-se que é necessário incluir a extensão xls, xlsx, xlsb.)

Abaixo disponibilizo uma função que também usa a propriedade do Workbooks para determinar qual está aberto no momento:

Function IsWBOpen (wbname As String) As Boolean
  ' Abre o workbook.

  Dim wb As Workbook

  On Error Resume Next

  Set wb = Workbooks(wbname)
   
  IsWBOpen = Not wb Is Nothing
End Function

Se wbname estiver aberta, a função retorna True. Quando não estiver aberta, a função retorna False.

Tags: VBA, Excel, Series, reference, referenciando, workbook, worksheet

VBA Excel - 05.10 - Referenciando planilha - Index - Referenciando pelo índice



É sempre bom lembrar-se de que:

workbooks = Arquivo que contém todas as planilha em diversas pastas.

worksheets = Planilhas individuais, contidas nas abas.


5 - Index - Referenciando um Workbook pelo índice:

Talvez nos seja imposta a condição de que o único modo para fazermos a referência a um workbook seja através do valor do índice. (Sim talvez esteja alterando uma aplicação de terceiros, por exemplo.)

O MS Excel acessa o valor do índice quando o mesmo é aberto nele. o primeiro workbook aberto recebe o valor 1 de índice, o segundo workbook aberto receberá o valor 2 de índice, e assim sucessivamente.

É claro que não é tão simples, este método tem um pequeno problema que o acompanha, pois quando deletamos um workbook ou o fechamos o valor do índice de toda a coleção Workbook muda.

Por exemplo, digamos que tenhamos 3 worbooks abertos com os seguintes índices de valor:

StatisticalDashboardFunctions.xls - 3
111112.xls - 2
HumanResources.xls - 1

Se uma tarefa em particular depende que todos os três workbooks estejam abertos utilizando-se dos valores dos índices destes, poderá ocorrer alguns desencontros quando os 'instanciarmos': Workbooks(1).Activate

Isto ativará HumanResources.xls como aberto, se fechá-la a StatisticalDashboardFunctions.xls e 111112.xls se moverão para baixo no índice: 

StatisticalDashboardFunctions.xls virá a ter o índice como 2

Ao passo que 111112.xls terá o índice como 1.

Usar o valor do índice como referência para os workbooks não é necessariamente errado, mas precisa entender o que está envolvido nesta escolha, sobre os possíveis erros que poderão ocorrer e como os corrigirá.

Tags: VBA, Excel, Series, reference, referenciando, workbook, worksheet, index, índice

eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine