Macro para copiar informaçoes

Bom dia

Criei uma macro de copiar
(Ctrl+shift para baixo para o lado + ctrl+c)

esta funcionado como desejei ao clicar em uma célula a seleção e copia é a partir da célula selecionada

REM  *****  BASIC  *****



sub copiar
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 args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "By"
args3(0).Value = 1

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

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1

dispatcher.executeDispatch(document, ".uno:GoRightToEndOfDataSel", "", 0, args4())

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


end sub

teste.jpg

ao clicar na celula B7 e depois no botão copiar que esta com a macro
é feita uma seleção
desde b7 até i7
e para baixo até o final da planilha que esta com borda

seria possível editar a macro para copiar apenas onde tem informação ?
no caso da foto em anexo preciso copiar as informações das linhas b7 e b8 até i7 e i8
onde esta com 0 e em branco não copiar
no caso da linha b9 para baixo não copiar

Att,

Complemento

Gilberto obrigado agora sim funcionou perfeitamente tinha sim nas colunas B9 a b17 informações tinha um procv

Comentáro

Gilberto você é o melhor
Top Top
ficou maravilhosamente linda a macro agora usando o complemente 2 que vc fez
te amo cara

vlw kkk

Ola @ToOM, seja bem vindo ao Grupo.

A macro esta certa, pela imagem não da para ter certeza, mas se esta descendo ate a linha 17, é devido as células B9 a B17 ter informação ( talvez fórmula ou foi digitado espaço ) se limpar a macro funciona, se não puder limpar, necessita outra alternativa de macro.

Complemento

Para não perder o PROCV, uma saída e selecionar, conforme o exemplo, B7:B8 e acionar a macro alterada abaixo:

sub copiar
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 args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
dispatcher.executeDispatch(document, ".uno:GoRightToEndOfDataSel", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
end sub

Complemento 2

Ou conforme o exemplo, B7 selecionado e responder a pergunta de quantas linha pegar…

sub copiar
rem ----------------------------------------------------------------------
Dim document   As object
Dim dispatcher As Object
Dim n As Integer
rem ----------------------------------------------------------------------
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	n = InputBox ( " Quantas linhas quer copiar ? " , " A T E N Ç Ã O " , "" )
	n= n - 1
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "By"
args1(0).Value = n
args1(1).Name = "Sel"
args1(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoDownSel", "", 0,  args1())
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "By"
args4(0).Value = 1
dispatcher.executeDispatch(document, ".uno:GoRightToEndOfDataSel", "", 0, args4())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
end Sub

ATENÇÂO:: Caso queira dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Grato.

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

Ola @ToOM, não use Adicionar responta para fazer comentário.

,

ATENÇÂO:: Caso queira dar mais detalhes a sua pergunta, use Descrição da imagem na pergunta ou Descrição da imagem abaixo. Grato.