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 <gilvan.vilarim@gmail.com>
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 <aolinto.lst@gmail.com>
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 usuarios@pt-br.libreoffice.org
# Informações sobre os comandos disponíveis (em inglês):
mande e-mail vazio para usuarios+unsubscribe@pt-br.libreoffice.org
# Cancelar sua assinatura: mande e-mail vazio para:
usuarios+unsubscribe@pt-br.libreoffice.org
# Arquivo de mensagens: https://listarchives.libreoffice.org/pt-br/usuarios/
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.