Criar tabela dinâmica via VBA  [Resolvido]

Tabela e gráficos dinâmicos!

Criar tabela dinâmica via VBA

Mensagempor FSoares » Qui Jun 14, 2018 12:24 pm

Bom dia,
Criei uma macro para gerar uma tabela dinâmica, só que ao executar gera erro em tempo de execução "5", segue minha macro.:

Código: Selecionar todos
Sub Macro6()
[b][color=#FF0000]    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "RESUMO DE VENDAS!R1C1:R1048576C10", Version:=xlPivotTableVersion15). _
        CreatePivotTable TableDestination:="DINAMICA VENDAS!R1C1", TableName:= _
[/color][/b]       "Tabela dinâmica4", DefaultVersion:=xlPivotTableVersion15
    Sheets("DINAMICA VENDAS").Select
    Cells(1, 1).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields( _
        "Nota Fiscal/Serie")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields(" Vlr.Total")
        .Orientation = xlRowField
        .Position = 2
    End With
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields(" Vlr.IPI")
        .Orientation = xlRowField
        .Position = 3
    End With
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("ST")
        .Orientation = xlRowField
        .Position = 4
    End With
    ActiveSheet.PivotTables("Tabela dinâmica4").AddDataField ActiveSheet. _
        PivotTables("Tabela dinâmica4").PivotFields(" Vlr.Total"), _
        "Contagem de  Vlr.Total", xlCount
    ActiveSheet.PivotTables("Tabela dinâmica4").AddDataField ActiveSheet. _
        PivotTables("Tabela dinâmica4").PivotFields(" Vlr.IPI"), "Contagem de  Vlr.IPI" _
        , xlCount
    ActiveSheet.PivotTables("Tabela dinâmica4").AddDataField ActiveSheet. _
        PivotTables("Tabela dinâmica4").PivotFields("ST"), "Contagem de ST", xlCount
    Range("B1").Select
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields( _
        "Contagem de  Vlr.Total")
        .Caption = "Soma de  Vlr.Total"
        .Function = xlSum
    End With
    Range("B1").Select
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields( _
        "Soma de  Vlr.Total")
        .Caption = "valor total da vendas"
        .NumberFormat = "#.##0,00_);[Vermelho](#.##0,00)"
    End With
    Range("C1").Select
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields( _
        "Contagem de  Vlr.IPI")
        .Caption = "valor do ipi"
        .Function = xlSum
        .NumberFormat = "#.##0,00_);[Vermelho](#.##0,00)"
    End With
    Range("D1").Select
    With ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("Contagem de ST")
        .Caption = "valor do ST"
        .Function = xlSum
        .NumberFormat = "#.##0,00_);[Vermelho](#.##0,00)"
    End With
    ActiveSheet.PivotTables("Tabela dinâmica4").CalculatedFields.Add "Campo1", _
        "=' Vlr.Total' +' Vlr.IPI' +ST", True
    ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("Campo1").Orientation _
        = xlDataField
    Range("E1").Select
    ActiveSheet.PivotTables("Tabela dinâmica4").PivotFields("Soma de Campo1"). _
        Caption = "valor total"
    Range("G1").Select
End Sub
Você não está autorizado a ver ou baixar esse anexo.
Editado pela última vez por wagner em Qui Jun 14, 2018 1:35 pm, em um total de 1 vez.
Razão: Códigos VBA devem ser inseridos com a TAG CODE existente no início da caixa de mensagens.
FSoares
Membro
Membro
 
Mensagens: 1
Registrado em: Ter Mai 23, 2017 1:11 pm
Has thanked: 2 times
Have thanks: 0 time

{ SO_SELECT }

Re: Criar tabela dinâmica via VBA

Mensagempor wagner » Qui Jun 14, 2018 1:34 pm

FSoares,

Boa tarde!

Seja muito bem vindo ao fórum.

Para aproveitar ao máximo o fórum e sempre manter o mesmo de forma organizada, sugiro ler os tópico da regras abaixo:
viewtopic.php?f=7&t=16757
viewtopic.php?f=7&t=203
viewtopic.php?f=7&t=7903
viewtopic.php?f=7&t=3841
viewtopic.php?f=7&t=12600
viewtopic.php?f=7&t=3371

Algumas solicitações especiais que pedimos, por gentileza, ficar atento:
1 - Não inserir no titulo de suas postagens expressões como Help, Ajuda, etc. O título deve ser um resumo da sua necessidade para que outras pessoas que tenham a mesma dúvida possam efetuar a pesquisa e achar como foi resolvido.
2 - Não insira em suas mensagens frases todas escritas em letras maiúsculas. Isso, na Internet, é compreendido como gritos e muitos usuários sequer respondem somente por esse fato!
3 - Insira sempre um arquivo exemplo compactado com .ZIP aqui mesmo no fórum. Existe, logo abaixo da caixa de mensagens, uma aba chamada "Adicionar um anexo" para essa finalidade. O arquivo exemplo deve ser pequeno, com apenas 5 linhas no máximo, compactado com .ZIP e ter o mesmo layout (nome do arquivo, nome das abas/guias/folhas, mesma linha/coluna onde os dados se iniciam) do arquivo original. Links de arquivos enviados para sites de compartilhamento de arquivos, muitas vezes são bloqueados pelas empresas, por conterem muitos vírus. Alguns usuários que acessam o fórum a partir de empresas não conseguem baixar tais arquivos.
4 - Não utilize a ferramenta CITAR para inserir o inteiro teor das mensagens que lhe são encaminhadas como resposta. Citações, se estritamente necessárias ao entendimento da mensagem que você quer enviar, devem ser apenas de pequenos trechos das mensagens.
5 - Se for postar códigos VBA aqui no fórum, utilize a ferramenta CODE localizada logo no início da caixa de mensagens (quinto botão da esquerda para a direita). As linhas de código devem ficar entre as palavras "CODE e /CODE".
6 - Agradeça sempre às pessoas que lhe responderam e às mensagens que atenderam a necessidade de sua demanda. Esse agradecimento deve ser clicando na mãozinha que fica localizada ao lado da ferramenta CITAR. Lembre-se: o fórum é gratuito e esse é o único incentivo para as pessoas que prestam ajuda. Você pode agradecer a quantos usuários quiser.
7 - O título ou o texto das mensagens postadas não devem ser escritos todo em letras maiúsculas. Na internet, tudo escrito em letras maiúsculas é interpretado como gritos e muitos usuários sequer olham para esse tipo de mensagem.
Se a resposta foi útil para você, por gentileza, Amigo, clique na mãozinha ao lado direito da ferramenta CITAR, no canto superior direito.

Atenciosamente
Wagner Morel

For this post the author wagner thanked:
FSoares (Sex Jun 15, 2018 6:22 pm)
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 3920
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 65 times
Have thanks: 1681 times

Re: Criar tabela dinâmica via VBA  [Resolvido]

Mensagempor wagner » Sex Jun 15, 2018 7:35 pm

FSoares,

Boa tarde!

Examinando mais atentamente seu código identifiquei que o problema é porque você está tentando nomear a planilha dinâmica que está criando como sendo uma planilha já existente e, dessa forma, ocorre o erro. Você deve usar o código para criar a planilha dinâmica da forma que o gravador de macro grava e somente depois da dinâmica criada é que você deve fazer outra macro (gravada mesmo) para renomear a dinâmica.
Se a resposta foi útil para você, por gentileza, Amigo, clique na mãozinha ao lado direito da ferramenta CITAR, no canto superior direito.

Atenciosamente
Wagner Morel

For this post the author wagner thanked:
FSoares (Seg Jun 18, 2018 12:12 pm)
Avatar do usuário
wagner
Moderador
Moderador
 
Mensagens: 3920
Registrado em: Sáb Out 20, 2012 12:49 pm
Localização: Fortaleza - CE
Has thanked: 65 times
Have thanks: 1681 times


Voltar para Tabela Dinâmica

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitantes