Pergunte aqui
0

Como usar um comando UNO sem todo o código de array

perguntadas 2018-04-26 23:04:29 +0200

imagem do gravatar de Crafteribanez

updated 2019-03-01 19:12:12 +0200

Peguei este exemplo da web e funciona. Ele vai para uma célula definida na sub Executar A pergunta é ?? Tenho como usar este comando ".uno:GoToCell" sem precisar todo este código tipo : document = ThisComponent.CurrentController.unoGotoCell(B8) ou algo parecido ?

REM  *****  BASIC  *****

sub Executar
rem ===> ir para planilha 1 celula c5
    IrParaCelula 2, "f8"
end sub

sub IrParaCelula   ( x as integer, y as string)       rem <=== como definir aqui ?
    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 = "Nr"
    args1(0).Value = x      rem <=== x é o numero da planilha
    dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args1())
    rem ----------------------------------------------------------------------
    dim args2(0) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "ToPoint"
    args2(0).Value = y      rem <==== y é a célula
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args2())
end sub
editar alterar tag assinalar como ofensivo fechar mesclar Excluir

3 Respostas

0

respondidas 2018-04-27 03:48:04 +0200

updated 2018-04-27 04:22:24 +0200

Ola @Crafteribanez, Também acho que é muita coisa para se digitar.

Então estou fazendo assim:

Esta chamo de SubMacro (já tenho uma coletânea de +/- 70)

 '=========================================================================
sub IrPara (xlocal as string) 'xlocal = Planilha.A1
'exemplo uso: IrPara "Planilha.A1" ou "Planila1.A1:B3" ou "NomeArea"
'=========================================================================
Dim document As Object
Dim dispatcher As Object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = xlocal
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub

Para fazer a sua macro eu só digitaria:

Sub Teste
   Call IrPara "Planilha1.C5"
   Call Irpara "Planilha1.F8"
end Sub

Logicamente a SubMacro usada deve constar na planilha.

Call é chamada de Macro, não é necessária, mas eu prefiro usar.

Desta maneira consigo usar SubMacros diversas vezes.

Eu as mantenho gravada no autotexto do Writer, quando vou montar uma Macro e como receita de bolo (IrPara, Copiar, Colar, deletar etc) , então copio as necessárias para a planilha e pronto.

Descrição da imagem


No momento estou revisando (melhorando algumas), se houver interesse posso lhe fornecer copia do meu autotexto, assim que terminar.


Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

editar assinalar como ofensivo Excluir Link mais
1

respondidas 2018-04-27 03:41:12 +0200

imagem do gravatar de Grafeno

Boa noite,

Não é possível porque o que executa o comando UNO ".uno:qualquercoisa" é o método executeDispatch(). E seus argumentos devem ser fornecidos como na macro que você encontrou.

Atte,

editar assinalar como ofensivo Excluir Link mais
0

respondidas 2018-04-27 13:57:28 +0200

imagem do gravatar de Crafteribanez

Bom dia Agradeço as duas respostas, foram ambas úteis. Infelizmente só posso marcar uma como gostei tentei aqui marcar as duas más não deu certo. Vou começar a desenvolver e utilizar este método com menos código. Quanto a do Sr. Gilberto sim, gostaria quando puderes receber algumas macros para utilização. Trabalho diariamente com desenvolvimento VBA MSExcel2010 visto assim o trabalho exigir, porém tendo difundir o LibreOffice no ambiente corporativo, más é difícil a aceitação. Coisas de custume e comodidade das pessoas, compreensível. Como comecei a pouco tempo a desenvolver em Calc ainda tô patinando em algumas coisas, porém o pouco que consegui disponibilizo no meu blog, caso queira dar uma conferida http://josealexandrefagundes.blogspot.... Ainda não comecei a desenvolver no Writer, más tá na agenda para iniciar na sequencia. Sr. Gilberto, fica o e-mail : jafags@portoweb.com.br para contatos futuros, vamos trocar umas ideias. Grato por enquanto.

editar assinalar como ofensivo Excluir Link mais

Comentários

Caro @Crafteribanez, sobre a melhor resposta só pode uma, mas pode positivar outras clicando na setinha ^. Uma boa escola para quem esta começando é o Escritório Aberto (https://wiki.documentfoundation.org/P...) tem diversos exemplos. Sobre as SubMacros, assim que terminar a revisão, lhe envio. Outra dica são os artigos da Revista LibreOffice Magazine (https://pt-br.libreoffice.org/projeto...) aqui uma coletânea das dicas publicadas http://www.schiavinatto.com/mundolibre.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2018-04-27 17:58:08 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2018-04-26 23:04:29 +0200

Lidas: 40 vezes

Última atualização: Apr 27 '18