[pt-br-usuarios] macros com referência relativa no Calc

classic Classic list List threaded Threaded
7 messages Options
Antonio Silva Antonio Silva
Reply | Threaded
Open this post in threaded view
|

[pt-br-usuarios] macros com referência relativa no Calc

Olá pessoal

Estou tentando fazer uma macro bem simples no Calc.

A partir de uma célula ativa movo o duas células para baixo, recorto, movo
uma célula para o lado direito e duas células para cima, colo, movo uma
célula para direira, desmarco Mesclar, movo três células para esquerda,
desmarco Mesclar, movo uma célula para direita e uma para baixo.

No entanto isso deve ser feito de forma relativa. Não em uma célula
determinada, mas a partir de uma célula ativa.

Fiz muito esse tipo de macro no Excel mas há um bom tempo só uso o
LibreOffice no Linux. Esta é a primeira vez que necessito fazer uma macro
no Calc.

Agradeço qualquer sugestão.

Abraços e boa semana para todos.

--
Antônio Olinto
São Paulo, Brasil

--
Você está recebendo e-mails da lista [hidden email]
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para [hidden email]
# Cancelar sua assinatura: mande e-mail vazio para:
  [hidden email]
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Gilvan Vilarim Gilvan Vilarim
Reply | Threaded
Open this post in threaded view
|

Re: [pt-br-usuarios] macros com referência relativa no Calc

Não manjo muito de macros, mas ao gravar um teste eu vi que ele gera a
movimentação de forma relativa usando GoDown ou GoRight, por exmeplo.
Somente ao mesclar ele usa um intervalo absoluto. Veja o que ele gerou (eu
apenas digitei uns valores como 123 e 456 e depois mesclei duas celulas). O
pessoal aqui vai dar mais ideias.

REM  *****  BASIC  *****
sub Main
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 = "StringName"
args1(0).Value = "123"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "StringName"
args3(0).Value = "456"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
args4(1).Name = "Sel"
args4(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args4())

rem ----------------------------------------------------------------------
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "StringName"
args5(0).Value = "789"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "By"
args6(0).Value = 1
args6(1).Name = "Sel"
args6(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "StringName"
args7(0).Value = "890"
dispatcher.executeDispatch(document, ".uno:EnterString", "", 0, args7())

rem ----------------------------------------------------------------------
dim args8(1) as new com.sun.star.beans.PropertyValue
args8(0).Name = "By"
args8(0).Value = 1
args8(1).Name = "Sel"
args8(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args8())

rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "ToPoint"
args9(0).Value = "$D$6:$E$6"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args9())

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

end sub


Em 22 de abril de 2018 12:12, Antonio Silva <[hidden email]>
escreveu:

> Olá pessoal
>
> Estou tentando fazer uma macro bem simples no Calc.
>
> A partir de uma célula ativa movo o duas células para baixo, recorto, movo
> uma célula para o lado direito e duas células para cima, colo, movo uma
> célula para direira, desmarco Mesclar, movo três células para esquerda,
> desmarco Mesclar, movo uma célula para direita e uma para baixo.
>
> No entanto isso deve ser feito de forma relativa. Não em uma célula
> determinada, mas a partir de uma célula ativa.
>
> Fiz muito esse tipo de macro no Excel mas há um bom tempo só uso o
> LibreOffice no Linux. Esta é a primeira vez que necessito fazer uma macro
> no Calc.
>
> Agradeço qualquer sugestão.
>
> Abraços e boa semana para todos.
>
> --
> Antônio Olinto
> São Paulo, Brasil
>
> --
> Você está recebendo e-mails da lista [hidden email]
> # Informações sobre os comandos disponíveis (em inglês):
>   mande e-mail vazio para [hidden email]
> # Cancelar sua assinatura: mande e-mail vazio para:
>   [hidden email]
> # Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/
> usuarios/
>



--
/*
*Prof. Gilvan Vilarim*
Instituto Federal de Educação, Ciência e Tecnologia do Rio de Janeiro - IFRJ
Federal Institute of Education, Science and Technology of Rio de Janeiro
http://www.gilvanvilarim.com.br/
*/

--
Você está recebendo e-mails da lista [hidden email]
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para [hidden email]
# Cancelar sua assinatura: mande e-mail vazio para:
  [hidden email]
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Gilvan Vilarim Gilvan Vilarim
Reply | Threaded
Open this post in threaded view
|

Re: [pt-br-usuarios] macros com referência relativa no Calc

Não testei, mas não basta apenas apagar as linhas que referenciam args1?
Bota uns comentários nelas e veja o que acontece...Como ele não vai ter uma
celula absoluta, talvez mova 2 vezes para baixo a partir da célula ativa,
como vc quer.

rem dim args1(0) as new com.sun.star.beans.PropertyValue
rem args1(0).Name = "ToPoint"
rem args1(0).Value = "$B$2"

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

Em 22 de abril de 2018 13:18, Antonio Silva <[hidden email]>
escreveu:

> Olá Gilvan
>
> Obrigado pela pronta resposta, ainda mais em um domingo.
>
> A macro que gravei segue abaixo. Ela faz o que quero mas sempre começa na
> mesma célula (B2) e não na célula ativa.
>
> Deve ser algo na referência args1(0).Value = "$B$2"
>
> O ideal seria que primeiro ele usasse a célula ativa: args1(0).Value =
> "ActiveCell"
>
> Minha planilha de exemplo é a seguinte:
>
>
>
>
> Obrigado,
>
> Antônio Olinto
>
> ================
> REM  *****  BASIC  *****
>
> sub teste2
> 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 = "ToPoint"
> *args1(0).Value = "$B$2"*
>
> dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
>
> rem ----------------------------------------------------------------------
> dim args2(1) as new com.sun.star.beans.PropertyValue
> args2(0).Name = "By"
> args2(0).Value = 1
> args2(1).Name = "Sel"
> args2(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())
>
> rem ----------------------------------------------------------------------
> dim args3(1) as new com.sun.star.beans.PropertyValue
> args3(0).Name = "By"
> args3(0).Value = 1
> args3(1).Name = "Sel"
> args3(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args3())
>
> rem ----------------------------------------------------------------------
> dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())
>
> rem ----------------------------------------------------------------------
> dim args5(1) as new com.sun.star.beans.PropertyValue
> args5(0).Name = "By"
> args5(0).Value = 1
> args5(1).Name = "Sel"
> args5(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())
>
> rem ----------------------------------------------------------------------
> dim args6(1) as new com.sun.star.beans.PropertyValue
> args6(0).Name = "By"
> args6(0).Value = 1
> args6(1).Name = "Sel"
> args6(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args6())
>
> rem ----------------------------------------------------------------------
> dim args7(1) as new com.sun.star.beans.PropertyValue
> args7(0).Name = "By"
> args7(0).Value = 1
> args7(1).Name = "Sel"
> args7(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args7())
>
> rem ----------------------------------------------------------------------
> dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
>
> rem ----------------------------------------------------------------------
> dim args9(1) as new com.sun.star.beans.PropertyValue
> args9(0).Name = "By"
> args9(0).Value = 1
> args9(1).Name = "Sel"
> args9(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args9())
>
> rem ----------------------------------------------------------------------
> dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
> Array())
>
> rem ----------------------------------------------------------------------
> dim args11(1) as new com.sun.star.beans.PropertyValue
> args11(0).Name = "By"
> args11(0).Value = 1
> args11(1).Name = "Sel"
> args11(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args11())
>
> rem ----------------------------------------------------------------------
> dim args12(1) as new com.sun.star.beans.PropertyValue
> args12(0).Name = "By"
> args12(0).Value = 1
> args12(1).Name = "Sel"
> args12(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args12())
>
> rem ----------------------------------------------------------------------
> dim args13(1) as new com.sun.star.beans.PropertyValue
> args13(0).Name = "By"
> args13(0).Value = 1
> args13(1).Name = "Sel"
> args13(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args13())
>
> rem ----------------------------------------------------------------------
> dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
> Array())
>
> rem ----------------------------------------------------------------------
> dim args15(1) as new com.sun.star.beans.PropertyValue
> args15(0).Name = "By"
> args15(0).Value = 1
> args15(1).Name = "Sel"
> args15(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args15())
>
> rem ----------------------------------------------------------------------
> dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, Array())
>
> rem ----------------------------------------------------------------------
> dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, Array())
>
> rem ----------------------------------------------------------------------
> dim args18(1) as new com.sun.star.beans.PropertyValue
> args18(0).Name = "By"
> args18(0).Value = 1
> args18(1).Name = "Sel"
> args18(1).Value = false
>
> dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args18())
>
>
> end sub
>
>
>
>
>
> Em 22 de abril de 2018 12:33, Gilvan Vilarim <[hidden email]>
> escreveu:
>
>> Não manjo muito de macros, mas ao gravar um teste eu vi que ele gera a
>> movimentação de forma relativa usando GoDown ou GoRight, por exmeplo.
>> Somente ao mesclar ele usa um intervalo absoluto. Veja o que ele gerou (eu
>> apenas digitei uns valores como 123 e 456 e depois mesclei duas celulas). O
>> pessoal aqui vai dar mais ideias.
>>
>
> ...
>
>>
>>
>> Em 22 de abril de 2018 12:12, Antonio Silva <[hidden email]>
>> escreveu:
>>
>>> Olá pessoal
>>>
>>> Estou tentando fazer uma macro bem simples no Calc.
>>>
>>> A partir de uma célula ativa movo o duas células para baixo, recorto,
>>> movo
>>> uma célula para o lado direito e duas células para cima, colo, movo uma
>>> célula para direira, desmarco Mesclar, movo três células para esquerda,
>>> desmarco Mesclar, movo uma célula para direita e uma para baixo.
>>>
>>> No entanto isso deve ser feito de forma relativa. Não em uma célula
>>> determinada, mas a partir de uma célula ativa.
>>>
>>> Fiz muito esse tipo de macro no Excel mas há um bom tempo só uso o
>>> LibreOffice no Linux. Esta é a primeira vez que necessito fazer uma macro
>>> no Calc.
>>>
>>> Agradeço qualquer sugestão.
>>>
>>> Abraços e boa semana para todos.
>>>
>>> --
>>> Antônio Olinto
>>> São Paulo, Brasil
>>>
>>> --
>>> Você está recebendo e-mails da lista [hidden email]
>>> # Informações sobre os comandos disponíveis (em inglês):
>>>   mande e-mail vazio para [hidden email]
>>> # Cancelar sua assinatura: mande e-mail vazio para:
>>>   [hidden email]
>>> # Arquivo de mensagens: https://listarchives.libreoffi
>>> ce.org/pt-br/usuarios/
>>>
>>
>> --
>> /*
>> *Prof. Gilvan Vilarim*
>> Instituto Federal de Educação, Ciência e Tecnologia do Rio de Janeiro -
>> IFRJ
>> Federal Institute of Education, Science and Technology of Rio de Janeiro
>> http://www.gilvanvilarim.com.br/
>> */
>>
>


--
/*
*Prof. Gilvan Vilarim*
Instituto Federal de Educação, Ciência e Tecnologia do Rio de Janeiro - IFRJ
Federal Institute of Education, Science and Technology of Rio de Janeiro
http://www.gilvanvilarim.com.br/
*/

--
Você está recebendo e-mails da lista [hidden email]
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para [hidden email]
# Cancelar sua assinatura: mande e-mail vazio para:
  [hidden email]
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Antonio Silva Antonio Silva
Reply | Threaded
Open this post in threaded view
|

Re: [pt-br-usuarios] macros com referência relativa no Calc

In reply to this post by Gilvan Vilarim
Prezado Gilvan e demais colegas,

Um pouco mais cedo eu havia respondido por engano apenas para o Gilvan.

No e-mail eu escrevi:

A macro que gravei ... faz o que quero mas sempre começa na mesma célula
(B2) e não na célula ativa.

Deve ser algo na referência args1(0).Value = "$B$2"

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
*args1(0).Value = "$B$2"*

O ideal seria que primeiro usasse a célula ativa: args1(0).Value =
"ActiveCell"

O uso de *ActiveCell* foi um chute. Eu nunca havia aberto um script do Calc
ou de outro programa do LibreOffice. Mas não é que deu (quase) certo?

Agora a macro faz exatamente o que quero mas retorna um erro de "Intervalo
Inválido" (que não a impede de ser executada).

Alguém saberia dizer como faço para contornar esse erro?

Obrigado, segue abaixo a macro com *ActiveCell *e um exemplo de planilha



Obrigado,

Sds

Antônio Olinto

sub teste2
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 = "ToPoint"
args1(0).Value = "*ActiveCell*"

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

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args2())

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

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

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

rem ----------------------------------------------------------------------
dim args5(1) as new com.sun.star.beans.PropertyValue
args5(0).Name = "By"
args5(0).Value = 1
args5(1).Name = "Sel"
args5(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args5())

rem ----------------------------------------------------------------------
dim args6(1) as new com.sun.star.beans.PropertyValue
args6(0).Name = "By"
args6(0).Value = 1
args6(1).Name = "Sel"
args6(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args6())

rem ----------------------------------------------------------------------
dim args7(1) as new com.sun.star.beans.PropertyValue
args7(0).Name = "By"
args7(0).Value = 1
args7(1).Name = "Sel"
args7(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args7())

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

rem ----------------------------------------------------------------------
dim args9(1) as new com.sun.star.beans.PropertyValue
args9(0).Name = "By"
args9(0).Value = 1
args9(1).Name = "Sel"
args9(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args9())

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

rem ----------------------------------------------------------------------
dim args11(1) as new com.sun.star.beans.PropertyValue
args11(0).Name = "By"
args11(0).Value = 1
args11(1).Name = "Sel"
args11(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args11())

rem ----------------------------------------------------------------------
dim args12(1) as new com.sun.star.beans.PropertyValue
args12(0).Name = "By"
args12(0).Value = 1
args12(1).Name = "Sel"
args12(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args12())

rem ----------------------------------------------------------------------
dim args13(1) as new com.sun.star.beans.PropertyValue
args13(0).Name = "By"
args13(0).Value = 1
args13(1).Name = "Sel"
args13(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args13())

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

rem ----------------------------------------------------------------------
dim args15(1) as new com.sun.star.beans.PropertyValue
args15(0).Name = "By"
args15(0).Value = 1
args15(1).Name = "Sel"
args15(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args15())

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

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

rem ----------------------------------------------------------------------
dim args18(1) as new com.sun.star.beans.PropertyValue
args18(0).Name = "By"
args18(0).Value = 1
args18(1).Name = "Sel"
args18(1).Value = false

dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args18())


end sub









Em 22 de abril de 2018 12:33, Gilvan Vilarim <[hidden email]>
escreveu:

> Não manjo muito de macros, mas ao gravar um teste eu vi que ele gera a
> movimentação de forma relativa usando GoDown ou GoRight, por exmeplo.
> Somente ao mesclar ele usa um intervalo absoluto. Veja o que ele gerou (eu
> apenas digitei uns valores como 123 e 456 e depois mesclei duas celulas). O
> pessoal aqui vai dar mais ideias.
>


> ...
>
>
> Em 22 de abril de 2018 12:12, Antonio Silva <[hidden email]>
> escreveu:
>
>> Olá pessoal
>>
>> Estou tentando fazer uma macro bem simples no Calc.
>>
>> A partir de uma célula ativa movo o duas células para baixo, recorto, movo
>> uma célula para o lado direito e duas células para cima, colo, movo uma
>> célula para direira, desmarco Mesclar, movo três células para esquerda,
>> desmarco Mesclar, movo uma célula para direita e uma para baixo.
>>
>> No entanto isso deve ser feito de forma relativa. Não em uma célula
>> determinada, mas a partir de uma célula ativa.
>>
>> Fiz muito esse tipo de macro no Excel mas há um bom tempo só uso o
>> LibreOffice no Linux. Esta é a primeira vez que necessito fazer uma macro
>> no Calc.
>>
>> Agradeço qualquer sugestão.
>>
>> Abraços e boa semana para todos.
>>
>> --
>> Antônio Olinto
>> São Paulo, Brasil
>>
> --
> /*
> *Prof. Gilvan Vilarim*
> Instituto Federal de Educação, Ciência e Tecnologia do Rio de Janeiro -
> IFRJ
> Federal Institute of Education, Science and Technology of Rio de Janeiro
> http://www.gilvanvilarim.com.br/
> */
>

--
Você está recebendo e-mails da lista [hidden email]
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para [hidden email]
# Cancelar sua assinatura: mande e-mail vazio para:
  [hidden email]
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Antonio Silva Antonio Silva
Reply | Threaded
Open this post in threaded view
|

Re: [pt-br-usuarios] macros com referência relativa no Calc

In reply to this post by Gilvan Vilarim
Caro Gilvan,

Testei sua sugestão e deu certo! Bem simples.

Muito obrigado, tenha uma ótima semana.

Abraços

Antônio Olinto

Em 22 de abril de 2018 14:13, Gilvan Vilarim <[hidden email]>
escreveu:

> Não testei, mas não basta apenas apagar as linhas que referenciam args1?
> Bota uns comentários nelas e veja o que acontece...Como ele não vai ter uma
> celula absoluta, talvez mova 2 vezes para baixo a partir da célula ativa,
> como vc quer.
>
> rem dim args1(0) as new com.sun.star.beans.PropertyValue
> rem args1(0).Name = "ToPoint"
> rem args1(0).Value = "$B$2"
>
> rem dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
>
> Em 22 de abril de 2018 13:18, Antonio Silva <[hidden email]>
> escreveu:
>
>> Olá Gilvan
>>
>> Obrigado pela pronta resposta, ainda mais em um domingo.
>>
>> A macro que gravei segue abaixo. Ela faz o que quero mas sempre começa na
>> mesma célula (B2) e não na célula ativa.
>>
>> Deve ser algo na referência args1(0).Value = "$B$2"
>>
>> O ideal seria que primeiro ele usasse a célula ativa: args1(0).Value =
>> "ActiveCell"
>>
>> Minha planilha de exemplo é a seguinte:
>>
>>
>>
>>
>> Obrigado,
>>
>> Antônio Olinto
>>
>

--
Você está recebendo e-mails da lista [hidden email]
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para [hidden email]
# Cancelar sua assinatura: mande e-mail vazio para:
  [hidden email]
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Gilberto Schiavinatto Gilberto Schiavinatto
Reply | Threaded
Open this post in threaded view
|

Re: [pt-br-usuarios] macros com referência relativa no Calc

In reply to this post by Antonio Silva
Uma macro exemplo:

/sub CortaCola //
//rem   ==> partindo da célula ativa . ---------------------------//
//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(1) as new com.sun.star.beans.PropertyValue//
//args1(0).Name = "By"//
//args1(0).Value = 1//
//args1(1).Name = "Sel"//
//args1(1).Value = false//
//dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())//
//dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())//
//dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())//
//rem
----------------------------------------------------------------------//
//dim args4(1) as new com.sun.star.beans.PropertyValue//
//args4(0).Name = "By"//
//args4(0).Value = 1//
//args4(1).Name = "Sel"//
//args4(1).Value = false//
//dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args4())//
//dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args4())//
//dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args4())//
//dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())//
//rem
----------------------------------------------------------------------//
//dim args8(1) as new com.sun.star.beans.PropertyValue//
//args8(0).Name = "By"//
//args8(0).Value = 1//
//args8(1).Name = "Sel"//
//args8(1).Value = false//
//dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args8())//
//dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
Array())//
//rem
----------------------------------------------------------------------//
//dim args10(1) as new com.sun.star.beans.PropertyValue//
//args10(0).Name = "By"//
//args10(0).Value = 1//
//args10(1).Name = "Sel"//
//args10(1).Value = false//
//dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())//
//dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())//
//dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())//
//dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
Array())//
//rem
----------------------------------------------------------------------//
//dim args14(1) as new com.sun.star.beans.PropertyValue//
//args14(0).Name = "By"//
//args14(0).Value = 1//
//args14(1).Name = "Sel"//
//args14(1).Value = false//
//dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args14())//
//dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args14())//
//end sub/


Em 22/04/2018 12:12, Antonio Silva escreveu:

> Olá pessoal
>
> Estou tentando fazer uma macro bem simples no Calc.
>
> A partir de uma célula ativa movo o duas células para baixo, recorto, movo
> uma célula para o lado direito e duas células para cima, colo, movo uma
> célula para direira, desmarco Mesclar, movo três células para esquerda,
> desmarco Mesclar, movo uma célula para direita e uma para baixo.
>
> No entanto isso deve ser feito de forma relativa. Não em uma célula
> determinada, mas a partir de uma célula ativa.
>
> Fiz muito esse tipo de macro no Excel mas há um bom tempo só uso o
> LibreOffice no Linux. Esta é a primeira vez que necessito fazer uma macro
> no Calc.
>
> Agradeço qualquer sugestão.
>
> Abraços e boa semana para todos.
>


--
Você está recebendo e-mails da lista [hidden email]
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para [hidden email]
# Cancelar sua assinatura: mande e-mail vazio para:
  [hidden email]
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Gilberto Schiavinatto Gilberto Schiavinatto
Reply | Threaded
Open this post in threaded view
|

Re: [pt-br-usuarios] macros com referência relativa no Calc

Uma versão mais limpa:

sub CortaCola
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(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = 1
args1(1).Name = "Sel"
args1(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Cut", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
args1())
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
args1())
dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args1())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())
end sub


Em 22/04/2018 16:14, Gilberto Schiavinatto escreveu:

>
> Uma macro exemplo:
>
> /sub CortaCola //
> //rem   ==> partindo da célula ativa . ---------------------------//
> //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(1) as new com.sun.star.beans.PropertyValue//
> //args1(0).Name = "By"//
> //args1(0).Value = 1//
> //args1(1).Name = "Sel"//
> //args1(1).Value = false//
> //dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())//
> //dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args1())//
> //dispatcher.executeDispatch(document, ".uno:Cut", "", 0, Array())//
> //rem
> ----------------------------------------------------------------------//
> //dim args4(1) as new com.sun.star.beans.PropertyValue//
> //args4(0).Name = "By"//
> //args4(0).Value = 1//
> //args4(1).Name = "Sel"//
> //args4(1).Value = false//
> //dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args4())//
> //dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args4())//
> //dispatcher.executeDispatch(document, ".uno:GoUp", "", 0, args4())//
> //dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())//
> //rem
> ----------------------------------------------------------------------//
> //dim args8(1) as new com.sun.star.beans.PropertyValue//
> //args8(0).Name = "By"//
> //args8(0).Value = 1//
> //args8(1).Name = "Sel"//
> //args8(1).Value = false//
> //dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args8())//
> //dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
> Array())//
> //rem
> ----------------------------------------------------------------------//
> //dim args10(1) as new com.sun.star.beans.PropertyValue//
> //args10(0).Name = "By"//
> //args10(0).Value = 1//
> //args10(1).Name = "Sel"//
> //args10(1).Value = false//
> //dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())//
> //dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())//
> //dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())//
> //dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0,
> Array())//
> //rem
> ----------------------------------------------------------------------//
> //dim args14(1) as new com.sun.star.beans.PropertyValue//
> //args14(0).Name = "By"//
> //args14(0).Value = 1//
> //args14(1).Name = "Sel"//
> //args14(1).Value = false//
> //dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args14())//
> //dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, args14())//
> //end sub/
>
>
> Em 22/04/2018 12:12, Antonio Silva escreveu:
>> Olá pessoal
>>
>> Estou tentando fazer uma macro bem simples no Calc.
>>
>> A partir de uma célula ativa movo o duas células para baixo, recorto, movo
>> uma célula para o lado direito e duas células para cima, colo, movo uma
>> célula para direira, desmarco Mesclar, movo três células para esquerda,
>> desmarco Mesclar, movo uma célula para direita e uma para baixo.
>>
>> No entanto isso deve ser feito de forma relativa. Não em uma célula
>> determinada, mas a partir de uma célula ativa.
>>
>> Fiz muito esse tipo de macro no Excel mas há um bom tempo só uso o
>> LibreOffice no Linux. Esta é a primeira vez que necessito fazer uma macro
>> no Calc.
>>
>> Agradeço qualquer sugestão.
>>
>> Abraços e boa semana para todos.
>>
>


--
Você está recebendo e-mails da lista [hidden email]
# Informações sobre os comandos disponíveis (em inglês):
  mande e-mail vazio para [hidden email]
# Cancelar sua assinatura: mande e-mail vazio para:
  [hidden email]
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/