Gostaria de saber como limpar a área de transferencia ao copiar celulas.
Tentei usar o
Application.CutCopyMode = False
mas não deu certo.
Obrigado
Gostaria de saber como limpar a área de transferencia ao copiar celulas.
Tentei usar o
Application.CutCopyMode = False
mas não deu certo.
Obrigado
Acredito que a área de transferência seja parte do sistema operacional em uso. Pode até existir um comando no LibreOffice que faça a limpeza da mesma, mas até agora, ninguém sabe dizê-lo. No Windows, se não me engano, existe um ícone para isso; no Ubuntu, sistema que uso, o Cairo-Dock pode fazer a limpeza da área de transferência. Basta clicar em local da barra do Cairo-Dock, depois vai em configurar e escolha a aba Complementos. Role a tela até encontrar Histórico da área de transferência. Marque a caixa e ele aparecerá na barra do Cairo-Dock. Depois dê um clique com o botão direito do mouse sobre o ícone de Histórico de área de transferência na barra do Cairo-Dock e selecione Limpar histórico da área de transferência.
Se for um comando do sistema operacional, pode tentar executar dentro da função Shell descrita em Função Shell
Achei que tinha um comando pra fazer isso. mas ta certo. so mandar copiar uma celula vazia que me resolve.
Acho que esse comando que eu coloquei é do VBA.
Obrigado
Não resolve. Ao copiar uma célula vazia, o Calc entende que o novo conteúdo copiado tem valor “em branco”, o que resulta em consumo de memória do mesmo jeito. Não sei se seu desejo era sobre uso de memória. No entanto, como escrito acima, o Windows possui uma função para limpar a área de transferência e os sistemas Linux apresentam também uma solução. Geralmente, você tem que manipular a API do sistema através de alguma linguagem de programação ou Script, como é o caso do VBA, para fazer essa tarefa.
Não é a melhor solução mesmo. Mas no meu caso, no ultimo comando da macro ela copia uma quantidade grande de dados. Quero evitar que alguém inadvertidamente cole isso em outro lugar depois de executar a macro. daí é menos mal.
Para o Excel seria algo:
(*referências à publicação foram conscientemente suprimidas, devido tratar-se de outro produto, mas foram postadas por alguém intitulado HTH)
Public Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function EmptyClipboard Lib "user32" () As Long
Public Declare Function CloseClipboard Lib "user32" () As Long
Public Function ClearClipboard()
OpenClipboard (0&)
EmptyClipboard
CloseClipboard
End Function
Sub ccc()
Call ClearClipboard
End Sub
Porém, o script acima se utiliza da sintaxe da M…Soft, se me lembrar e tiver algum tempo livre, talvez dê uma olhada para ver quais as linhas para o LibreOffice. Mas como te escrevi, precisa interferir diretamente no respectivo módulo da API do sistema em uso.