Página 1 de 1

Macro - Intervalo Dinâmico

Enviado: 12 Ago 2016 às 23:05
por felipereis50
Olá

Primeiramente, digo que eu tenho 1% de conhecimento de macros. na verdade apenas o conceito.
Estou treinando e montando uma macro.

Desejo criar uma macro em que eu possa criar uma tabela dinâmica para ela.
Até aqui é fácil. Abri um excel e imaginando que na minha planilha exista 10 linhas e 10 colunas de informaçôes, Cliquei em Ctrl + T (selecionar tudo) fui no menu e criei uma tabela dinâmica. Montei os dados e encerrei a macro.

Supondo que no mês seguinte, a minha planilha traga 20 linhas + 20 colunas de informações. Vou na macro o executo.
O processo é feito normalmente, porém a seleção de dados fica apenas com as 10 linha e 10 colunas .

Imaginei que se eu desse um comando de Ctrl+T enquanto gravo a macro, numa próxima tabela onde existam x linhas e y colunas, a seleção de dados daria certo.

Como faço para resolve?

Macro - Intervalo Dinâmico

Enviado: 13 Ago 2016 às 18:08
por gfranco
Boa noite felipereis50.
Minha sugestão é que primeiramente, vc formate sua origem de dados no formato tabela ( guia inserir, grupo tabelas).
Estando então, sua origem dos dados formatada como acima e, apos criar a tabela dinâmica inicial, quando linhas ou colunas adjacentes aos dados iniciais forem incluídas basta ir na guia dados, grupo conexões e clicar em atualizar tudo que os dados recém inseridos já estarão disponíveis na tabela dinâmica. Não e necessário criar uma nova.
At.
gfranco

Re: Macro - Intervalo Dinâmico

Enviado: 15 Ago 2016 às 11:42
por alexandrevba
Bom dia!!
Código: Selecionar todos
Sub Criar_Tabela_Dinamica()
'Autor: alexandreVBA
'Data: 15/08/2016
    Dim pt As PivotTable
    Dim strField As String
    Dim WSD As Worksheet
    Set WSD = Worksheets("Plan1") 'Origem dos dados
    Dim PTOutput As Worksheet
    Set PTOutput = Worksheets("Plan2") 'Local da TD
    Dim PTCache As PivotCache
    Dim PRange As Range
    ' Encontra a ultima linha com dados
    Dim finalRow As Long
    finalRow = WSD.Cells(Application.Rows.Count, 1).End(xlUp).Row
    ' Encontra a ultima coluna com dados
    Dim finalCol As Long
    finalCol = WSD.Cells(1, Application.Columns.Count).End(xlToLeft).Column
    ' Localiza o intervlo de dados
    Set PRange = WSD.Cells(1, 1).Resize(finalRow, finalCol)
    Set PTCache = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=PRange)
    ' Deleta as colunas na Plan2
    PTOutput.Range("A:J").Delete
    ' Cria a Tabela Dinâmica
    Set pt = PTCache.CreatePivotTable(TableDestination:=PTOutput.Cells(1, 1), _
    TableName:="MinhaTD")
    'Defina seu LayOut preferido
    pt.ManualUpdate = False
End Sub
Att