Macro de copiar e colar na proxima linha vazia

olá,
como fazer uma macro para copiar de uma celula e colar especial em outra sendo que, sendo que se a celula que ela for colar tiver alguns valor que ela cole na proxima abaixo. Tipo eu coloco ela para colar na celula A1, se a celula A1 estiver com valores, então ela cola na A2.

Segue planilha com teste. A Macro utilizado é esta:

    REM  *****  BASIC  *****
Global document As Object
Global dispatcher As Object

Sub CopiarColarPrimeiraVazia
	Call DocDisp 'Uso Geral
	Call IrPara "LocalCopiar"
	Call Copiar
	Call IrPara "ColunaColar" rem Primeira celula da coluna de dados
	Call PrimeiraVazia
	Call Colar
end Sub

' Call é usado para chamar outra Macro.

Sub DocDisp
	document   = ThisComponent.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")	
end Sub


'=========================================================================
sub IrPara (xlocal as string) 'xlocal = Planilha.A1
'exemplo uso: IrPara "Planilha.A1" ou "Planila1.A1:B3" ou "NomeArea"
'=========================================================================
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = xlocal
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
end sub

'=========================================================================
sub Copiar
'=========================================================================
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
end sub


'=========================================================================
sub PrimeiraVazia
'=========================================================================
dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:GoDown", "", 0, Array())
end sub

'=========================================================================
sub Colar
'=========================================================================
dim args2(5) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Flags"
args2(0).Value = "A"
args2(1).Name = "FormulaCommand"
args2(1).Value = 0
args2(2).Name = "SkipEmptyCells"
args2(2).Value = false
args2(3).Name = "Transpose"
args2(3).Value = false
args2(4).Name = "AsLink"
args2(4).Value = false
args2(5).Name = "MoveMode"
args2(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args2())
end sub

Caso a resposta atendeu sua necessidade, por gentileza, click na bolinha Descrição da imagem a esquerda da resposta, para finalizar a pergunta.

Faça uma gravação de Macro, de Colar especial com suas opções e sobregrave em Colar.

Gilberto é isso mesmo que quero, muito obrigado, vc me ajudou muito

Gilberto sua macro funciona muito bem, porém estou com um problema quando precisa pular célula que está mesclada não dá da certo, não cosegue pular para proxima linha, tem como resolver isso?

Infelizmente não é possível, quero dizer, eu não conheço uma solução para isso. A dica e tirar a mesclagem.

Muito obrigado pela ajuda, vou fazer isto.

Tenho um código aleatório em formula… desejo copia-lo e cola-lo como valor.

No meu caso a estrutura da tabela seria a mesma do seu exemplo.

Qual alteração na macro devo fazer?

@Matulle Favor abrir novo tópico com necessidade, e arquivo exemplo.

1 Like

Recomendo também que olhe esta minha pergunta parecida com a sua e (principalmente) a resposta do amigo @Grafeno.

Obrigado por ajudar.