Libreoffice Calc > Formatar > Dispor > Trazer para frente

Tentei gravar uma macro : Exibir > Navegador > Objetos OLE > Nome do Gráfico >>>> Formatar > Dispor > Trazer para a Frente > Celula A5 . Tudo na mesma planilha.
Depois a macro é vinculada a uma forma.
Após gravada a macro somente seleciona a celula. Como resolver este problema? Por Favor Alguém? Obrigado!!!

sub GrafMes
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Navigator"
args1(0).Value = true

dispatcher.executeDispatch(document, ".uno:Navigator", "", 0, args1())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:GoToObject", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Navigator"
args3(0).Value = false

dispatcher.executeDispatch(document, ".uno:Navigator", "", 0, args3())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:BringToFront", "", 0, Array())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$A$5"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
end sub

.

Na verdade são 5 gráficos dispostos um sobre o outro e cada um tem uma forma (ou botão) que ao ser clicada traga o gráfico correspondente para frente .

Poste a macro…

Não sei se as ações no navegador podem ser gravadas. Eu gravaria a seleção do gráfico e a sequencia para trazer pra frente. A célula A5 é selecionada por que tem vc clicou nela logo antes de terminar a gravação

Na verdade são 5 gráficos dispostos um sobre o outro e cada um tem uma forma (ou botão) que ao ser clicada traga o gráfico correspondente para frente .

Ola não sei se é este o erro da macro, mas na gravação, dois dispatcher
ficaram como observação, rem na frente, veja abaixo as duas linha em destaque.

sub GrafMes
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Navigator"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:Navigator", "", 0, args1())


'--------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToObject", "", 0, Array())
'---------------------------------------------------------------------


dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Navigator"
args3(0).Value = false
dispatcher.executeDispatch(document, ".uno:Navigator", "", 0, args3())


'------------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:BringToFront", "", 0, Array())
'------------------------------------------------------------------------


dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = "$A$5"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
end sub

Corrija o seu e rode novamente para ver o que acontece…boa sorte…;;

Fiz a correção e também não funciona. Vou pesquisar mais…por enquanto obrigado.

Boa tarde,

Quando o gravador de macro não traz o que queremos (o que geralmente vai acontecer porque ele é experimental e limitado), temos que recorrer a API UNO.

Para macro abaixo funcionar, o gráfico deve ser nomeado, clicando sobre ele com o botão direito do mouse, depois Nome… e preenchendo o campo.

Sub TrazerParaFrente
Dim oDoc As Object, oPlan As Object
Dim oGraficos As Object, oGraf As Object
Dim g As Long

   oDoc = ThisComponent
   oPlan = oDoc.Sheets.getByName("Planilha1")
   oGraficos = oPlan.DrawPage
      
   For g = 0 to (oGraficos.Count - 1)
      oGraf = oGraficos.getByIndex( g )
      If oGraf.Name = "Grafico 01" Then '<<<< NOME DO GRÁFICO'
         oGraf.ZOrder = (oGraficos.Count - 1)
      End If      
   Next g
End Sub

Atte,

Obrigado pela ajuda.
Tentei incluir esta macro mas não deu certo, muito mais pela minha pouca habilidade do que qualquer outra coisa. Não entendo nada de programação e também não acho justo ter tudo “mastigado”. Então resolvi fazer mudanças na minha planilha que não incluam macros.
Mais uma vez Obrigado pela atenção!

@djonnys, ótimo que tenha resolvido sem macro. Mas o código vai servir para quem estiver procurando sobre o assunto. Obrigado pelo retorno.

Com calma consegui fazer funcionar corretamente a macro. Perfeito!
Mais uma vez muito obrigado!