Macro para atualizar Tabela Dinâmica

Bom dia!

Crei uma macro no calc a fim de atualizar a tabela dinâmica, contudo, a mesma não é atualizada. Alguém poderia me ajudar? No help do LO há algumas situações em que uma ação não é gravada. Sendo assim, tentei gravei a macro pelo teclado, mas não dá certo. Será que a simples ação de atualizar a planilha não pode ser gravada?

Abs,
Adriano

Bom dia,

Se não me engano o recurso gravar macro é experimental e instável, por isso precisa ser ativado nas Opções Avançadas do LibreOffice.

Sempre que usar é bom ir na IDE conferir o código para ver se não existe alguma linha crucial “comentada” pelo “gravador” por engano.

Mas, de qualquer forma, veja se a macro abaixo será útil no seu caso:

'----------------------------------------------------------------
'	Atualiza a primeira Tab. Dinâmica da Planilha Ativa
'----------------------------------------------------------------
Sub AtualizarTabDinamica
Dim PlanAtiva as Object
Dim TabDinam1 as Object

	'Obter a Planilha Ativa e a Tabela Dinâmica
	PlanAtiva = ThisComponent.getCurrentController.getActiveSheet()
	TabDinam1 = PlanAtiva.DataPilotTables.getByIndex(0)
	
	'Atualizar a Tabela Dinâmica
	TabDinam1.refresh()
End sub


At.te,
Grafeno

Grafeno, muito obrigado! Show de bola… deu certo. Esta comunidade está estimulando-me a usar cada vez mais o LO.

Obrigado Adrian!

Feito. Obrigado Grafeno.

Adrian, fico feliz em ajudar. E realmente a troca de experiências e soluções é que enriquece o uso de um software. - - Outra coisa, já que a macro resolveu seu problema, você poderia marcar a resposta como correta? É só clicar no botão idicado na imagem http://s2.postimg.org/g1866huw5/image.jpg - - Vai ser muto bom para quem for pesquisar as questões respondidas.

Grafeno, testei esse seu código e funcionou perfeitamente, no entanto preciso de sua ajuda, pois tenho mais tabelas na mesma planilha e não estou conseguindo atualizar todas elas com um macro.

Pelo que vi a macro atualiza a primeira dinâmica da planilha. No meu caso tenho várias dinâmicas na mesma planilha, como faço para a macro atualizar todas?

Ai no caso é preciso alterar o código acrescentando um Loop para percorrer todas as tabelas dinâmicas da planilha atualizando-as. Vc poderia abrir uma nova pergunta com sua dúvida que eu posto o código adaptado.

Tenho estas duas:

'================================================|
sub AtualizarTabelaDimamicaPorCelula (x as string)
' exemplo uso: AtualizarTabelaDinamicaCel "Planilha1.c7"
' observação: indicar uma célula da Tabela Dinâmica.
'================================================|
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = x 'indicar uma célula da Tabela Dinâmica.
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:RecalcPivotTable", "", 0, Array())
end sub



'================================================|
Sub AtualizaTabelaDinamicaPorNumero (x as integer)
' exemplo uso: AtualizarTabelaDinamicaN 1
' observação: indicar o numero da Tabela Dinâmica.
' Desenvolvida por Grafeno.
'================================================|
'Obter a Planilha Ativa e a Tabela Dinâmica
PlanAtiva = ThisComponent.getCurrentController.getActiveSheet()
TabDinam1 = PlanAtiva.DataPilotTables.getByIndex(x) 'x = Numero Tabela
'Atualizar a Tabela Dinâmica
TabDinam1.refresh()
End sub