Macro para copia e colar em uma palinha para outra LibreOffice

Boa tarde,

Pessoal estou tentando criar uma macro mais na realidade não consegui.
Peguei algumas ideias em pesquisa pela net.

Vou mandar o que coloquei do pessoal.

Mais não está funcionando como eu quero:
Que é colocar linha apois linha.

Sub CopiarDadosEntrePlanilhas ’ É ESTE QUE ESTÁ FUNCIONANDO

' Define as variáveis
Dim oDoc As Object
Dim oOrigemPlanilha As Object
Dim oDestinoPlanilha As Object
Dim oOrigemIntervalo As Object
Dim oDestinoCelula As Object
Dim UltimaLinha As Long
Dim oSheet As Object
Dim oCellRange As Object
Dim oCursor As Object


' Acessa o documento atual (o arquivo do Calc)
oDoc = ThisComponent

' Obtém a planilha ativa (ajuste o nome se necessário)
oSheet = ThisComponent.CurrentController.ActiveSheet    

' Acessa a planilha de origem e de destino pelo nome
oOrigemPlanilha = oDoc.getSheets().getByName("Planilha1")
oDestinoPlanilha = oDoc.getSheets().getByName("Planilha2")

' Cria um cursor para encontrar a última linha utilizada
oCursor = oSheet.createCursor()
oCursor.gotoEndOfUsedArea(False)

' Obtém o número da última linha preenchida na planilha
UltimaLinha = oCursor.getRangeAddress().EndRow


' Define o intervalo de dados a ser copiado.
' Neste exemplo, ele copia da linha 0 (A1) até a última linha preenchida.
' Se a sua tabela tiver cabeçalho, ajuste para a linha 1 (A2)
OrigemDados = oSheet.getCellRangeByPosition(0, 0, oCursor.getRangeAddress().EndColumn, UltimaLinha)        

' Define o intervalo de células a ser copiado na planilha de origem
oOrigemIntervalo = oOrigemPlanilha.getCellRangeByName("A2:F40")

' Define a célula de destino na planilha de destino - Para minha planilha Destino que é = Planilha2
' O método copyRange cola os dados a partir da célula superior esquerda do intervalo de destino
oDestinoCelula = oDestinoPlanilha.getCellByPosition(1, 1) ' Coluna E (índice 4), Linha 1 (índice 0)

'oDestinoPlanilha = oSheet.getCellByPosition(0, UltimaLinha + 1)

' Executa a cópia  - Para minha planilha Destino que é = Planilha2
oDestinoPlanilha.copyRange(oDestinoCelula.getCellAddress(), oOrigemIntervalo.getRangeAddress()) ' Planilha2

' Contagem da Linha em Branco para fazer a Copia dos Dados Intervalos - Para planilha Destino que é = Planilha2 
oDestinoPlanilha = oSheet.getCellByPosition(0, UltimaLinha + 1) ' Planilha2

' Realiza a cópia do intervalo - Para minha planilha Destino que é = Planilha2
oSheet.copyRange(oDestinoPlanilha.CellAddress, oOrigemPlanilha.RangeAddress) ' Planilha2

' Exibe uma mensagem de conclusão
MsgBox "Dados copiados para a linha " & UltimaLinha + 2 & ".", 64, "Macro Concluída"    

End Sub

Por favor se algume puder me ajudar eu agradeço por demais.
Desta forma ele copia em cima dos dados que já existe na Planilha2 e não abaixo na linha em branco e assim por diante.

Sim tema mais uma coisa quando a macro for executada eu quero que ela limpe os dados da Planilha1 que vai ser copiada para a Planilha2

Atenciosamente,
Nelinho

Ola @Nelinho , a colagem é a partir COLUNA B?

A primeira colagem começa em B2, é isso?

Bom dia

Eu faço a copia da coluna B2 ate a E todos as linhas que estiverem preenchidas e copio para a Outra Planilha na mesma posição das colunas da planilha matriz.

image

@Nelinho, segue sugestão…

Preencher os dados e clicar no botão Transferir dados. .

Nelinho.ods (15,2,KB)

Obrigado vou testar aqui e lhe falo.

Deus esse erro

ERRO DE EXECUÇÃO DO BASIC
Propriedade ou método não encontrado: AutoSubMacros

Resolvido era colocar uma aspa simples neste nome AutoSubMacros

Ai funcionou.

Obrigado meu nobre pela ajuda

1 Like

Boa noite, meu grande serviu, mais tem um coisa que eu queria lhe informa.

Este processo que vc fez foi recorta da coluna linha até coluna linha 40 e move para outra planilha. Não foi isso ?

Me corrigir se eu estiver errado.

Ele tem formato de datas máscara para eu não digitar as / e depois disso ele apagar da planilha1 e está levando também as cores da linha para outra planilha.

E no execel eu faço só a copia de dados de linha preenchidas da planilha1 para a planilha2.

Pergunta para o amigo tem como ser assim ?

Desculpas por alguma coisa, fico no aguardo de uma resposta.

Até mais e um ótimo final de semana.

Ola @Nelinho , troque:

Execute "Cut"

Por:

Execute "Copy"
Execute "ClearContents"

Vou fazer este teste na segunda feira muito obrigado pela ajuda mais uma vez.

Boa noite,

Obrigado pela sua ajuda. Deu certo.

Se eu tiver mais alguma duvida ou precisando da ajuda posso contar com o senhor ?

1 Like