ESC (ESCAPE) em macro

Em uma macro onde se usa copiar e colar, como cancelar a demarcação (tracejado piscante) da área copiada.

Manualmente é ESC e via Basic da Macro ?

O gravado de macros não grava o comando ESC.

1 Like

Boa noite,


Sei que esta questão está aberta há um tempo, mas apenas hoje me deparei com uma solução para ela.

Não achei um comando equivalente ao ESC manual que funcione para o caso, mas encontrei outra rota. Acrescentando as dua linhas abaixo numa macro gravada, em sequencia, retiramos a seleção (tracejado piscante):

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

O primeiro comando entra no modo edição de célula (o que elimina o tracejado) e outro sai (cancela).



Um exemplo completo, que copia o conteúdo da célula A1, cola em D1 e elimina os tracejados:

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 = "ToPoint"
args1(0).Value = "$A$1"

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

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

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$D$1"

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

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

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SetInputMode", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Cancel", "", 0, Array())
end sub

Atte,

Ola @Grafeno, obrigado pela dica, mas não esta dando certo. Uso Win7 + Libo.5.3.5.2, veja arquivo que fiz o teste, não sai a marcação. Teste ai, qual SO usa?

arq.teste

@Gilberto Schiavinatto, eu uso Ubuntu 16.04 + Libo 5.3.4.2, mas em meus testes executei a macro direto da IDE do Basic. Usando um botão de pressão, como no seu arquivo, os comandos copiar e colar não funcionam. Arranjei um Win7 + Libo 5.3.5.2, testei e ocorreu a mesma coisa: macro só funciona executada da IDE do Basic ou do Organizador de Macros.

Seguindo em meus testes, as macros funcionaram quando substitui os botões de pressão por 3 formas (retângulos) com as macros atribuídas. Veja o novo_arquivo_teste.ods

Ok @Grafeno, agora esta funcionando. Obrigado.

Alo @ohallot, conforme comentário do @Grafeno, “Usando um botão de pressão, como no seu arquivo, os comandos copiar e colar não funcionam.” pode ser um bug?