Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
#52982
Fala galera, tranquilo ?
Dei uma olhada aqui no fórum (e em muitos outros) e apesar de encontrar posts com problemas semelhantes, não consegui aplicar nada...Poderiam me dar uma ajuda, por favor ?

Tenho uma planilha com muitas abas (muitas mesmos) que contem tabelas dinâmicas, e cada uma dessas abas tem de 1 até 20 tabelas dinâmicas, dependendo da info. Cada aba tira suas informações de uma base diferente (que ficam fora dessa planilha).

Exemplo resumo: 20 abas, 70 tabelas dinâmicas, 20 arquivos externos que contém bases para cada aba.

Quinzenalmente eu preciso atualizar todas estas abas e posteriormente as tabelas dinâmicas. Eu tenho feito isso manualmente, o que leva bastante tempo (tanto pela quantidade quanto pela velocidade do Excel), abrindo cada base, atualizando as Tabelas desta base, fechando e indo para a próxima.



Esta planilha foi criada por uma pessoa que trabalhou aqui anteriormente, e já existe uma macro/vba que faria esse trabalho de abrir e atualizar tudo, porém, ela não funciona (aparentemente funcionava antigamente).


Precisava entender o que acontece de errado e tentar ajusta-la.


Exemplo do código que já possuo feito na planilha:
Código: Selecionar todos
Sub Atualizar()

 Dim Tempo As Double
 Tempo = Now()
Sheets("Atualizar").Select
 Call Resultados.Resultado

'Dinâmica 126
Application.Workbooks.Open "\\LAQFS01\inteligencia mercado\00. BASES DE DADOS\BASE 126\BASE 2017 - AGRUPADO.xlsb", UpdateLinks:=False
  
Application.Workbooks.Open "\\LAQFS01\inteligencia mercado\98. PAINEL DE CONTROLE\Relatório_Diretoria\Graficos_Relatorio-Diretoria.xlsb"
    Sheets("Dinâmica 126").Select
    [u]ActiveSheet.PivotTables("Tabela dinâmica2").PivotCache.Refresh[/u]
    [u]ActiveSheet.PivotTables("Tabela dinâmica1").PivotCache.Refresh
    ActiveSheet.PivotTables("Tabela dinâmica3").PivotCache.Refresh[/u]
    
'Dinâmica 126 VPL
Application.Workbooks.Open "\\LAQFS01\inteligencia mercado\00. BASES DE DADOS\BASE 126\BASE 2017 - AGRUPADO.xlsb", UpdateLinks:=False
  
Application.Workbooks.Open "\\LAQFS01\inteligencia mercado\98. PAINEL DE CONTROLE\Relatório_Diretoria\Graficos_Relatorio-Diretoria.xlsb"
    Sheets("Dinâmica 126 VPL").Select
    [u]ActiveSheet.PivotTables("Tabela dinâmica3").PivotCache.Refresh
    ActiveSheet.PivotTables("Tabela dinâmica2").PivotCache.Refresh
    ActiveSheet.PivotTables("Tabela dinâmica1").PivotCache.Refresh[/u]
as partes sublinhadas do código acima são onde está dando o erro (até o momento)


É mesmo necessário que eu abra cada base pelo VBA antes de realizar a atualização das tabelas? (eu preciso fazer isso manualmente, do contrário, a tabela não acha a base para atualizar).


Consigo usara algo parecido com "active.worksheet refreshall.pivottables"??


Desculpe pelo post um pouco longo e talvez mal explicado

Agradeço desde já pela ajuda.

Att,
RSA
#53024
Estas bases de dados estão vinculados ao seu arquivo como: por fórmulas, por conexão com banco de dados, PowerQuery, VBA? Ou as tabelas dinâmicas são feitas diretamente com os dados de origem de arquivos externos? Explique um melhor isso, por favor.

Após atualizar as bases, você pode atualizar todas as tabelas dinâmicas da seguinte forma:
Código: Selecionar todos
Dim wshPlan  as Worksheet
Dim pvtTabDin  as PivotTable

For each wshPlan in Worksheets
       For each pvtTabDin in wshPlan.PivotTables
                              pvtTabDin.PivotCache.Refresh
       Next pvtTabDin
Next wshPlan
#53026
Olá babdallas, obrigado pela sua resposta.


As minhas tabelas dinâmicas estão ligadas diretamente nos dados dos arquivos externos no modo simples (inserir tabela dinâmica, trocar o arquivo, selecionar colunas e pronto).



Tentei utilizar o código que você disponibilizou acima, porém, sem sucesso. :cry:
Deixei rodando por mais 1h30 e nada aconteceu, somente carregando e não saia do lugar.
Não chegou a dar nenhum erro no VBA em si, só não saia do lugar.
Acredito que possa ser por eu estar com os arquivos das bases fechados (como comentei no primeiro post, eu só consigo atualizar manualmente, tendo as bases abertas).
#53029
Acabei de fazer um teste aqui com um arquivo externo e deu certo atualizar a tabela dinâmica sem abrir o arquivo, msmo o arquivo estando em uma rede corporativa.
#53036
Eu imagino que o esperado seja isso mesmo, atualizar a tab dinâmica independente das bases estarem abertas (manualmente ou VBA)

Mas no meu arquivo não funciona, talvez pelo tamanho do arquivo e das bases
o tamanho do caminho dentro da rede ou sei lá


De qualquer modo, ainda não consegui resolver a minha situação =/
#54708
O ideal é que você anexe a planilha e a base de dados para tentar entender o que pode estar ocorrendo.
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord