Como Mover/copiar uma planilha para outro arquivo

Bom dias amigos, acho q não soube explicar minha pergunta anterior, mil descupas. Talvez assim fique mais fácil de entender:

Eu sei q se os dois arquivos estiverem abertos eu posso manualmente ir em mover/copiar planilha mas preciso de uma macro que faça isso com a aba atualmente exibida e quando o segundo arquivo não esteja aberto.

Agradeço muito se puderem me ajudar nisso.
Obrigado

@Regisfreitas, O Mover/Copiar planilha o gravador de macro reconhece. Isto é bom sinal.

Mas o arquivo receptor, aparentemente, deve estar aberto.

Então, imagino, que a macro deva abrir o arquivo2 executar a movimentação e salvar e fechar o arquivo2.

Verei mais tarde, agora não tenho como testar esta sugestão.

@gilberto-schiavinatto Muito obrigado pela sua atenção. Não consegui fazer sua sugestão por inabilidade mesmo pois uso o gravador de macro e ele apenas criou a linha dispatcher.executeDispatch(document, “.uno:OpenFromCalc”, “”, 0, Array()) não salvando o arquivo que deve-se abrir e nem ações posteriores como fechar o arquivo. Espero que consiga :slight_smile: Abraços.

Estou tentando…

Seguindo a sua sugestão eu tentei pela macro disponibilizada nesse tópico: Acionar macro de outra planilha para executar no arquivo destino a importação da planilha do arquivo origem.
Mas novamente, como só uso o gravador de macros, ele apenas abre a janela de inserir planilhas com a linha dispatcher.executeDispatch(document, “.uno:Insert”, “”, 0, Array()) ele não salva o arquivo que quero puxar nem a planilha q seria sempre a mais recente.

@Regisfreitas, Via macro no arquivo1 consegui abrir arquivo2 gravar dados nele mas como salva-lo e fechar não consegui.

Então no arquivo2 tentei colocar macro automática para Salvar e Fechar…mas trava, então coloquei um Menu Salvar e Fechar em um clique para facilitar ( fica aberto ajuda para a macro que se auto executa, após abertura, em 3 segundos Salva e mais 2 segundos Fecha, tempo suficiente para a gravação da Nova planilha)

Segue arquivo1 (onde esta o formulário), e arquivo2 banco de dados.

Segue a macro do arquivo1: acertar a Rota do arquivo…

'================================================|
Sub GravarDados
'================================================|
rem define variables
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "FRONTEND.F2"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
Dim oSel as Object
	oSel = ThisComponent.getCurrentSelection()
	Var1 = oSel.getString()
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "Front"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "Plan3"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Name"
args2(0).Value = Var1
dispatcher.executeDispatch(document, ".uno:RenameTable", "", 0, args2())
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "ToPoint"
args6(0).Value = "$B$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args6())
dim args7(5) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Flags"
args7(0).Value = "SVDT"
args7(1).Name = "FormulaCommand"
args7(1).Value = 0
args7(2).Name = "SkipEmptyCells"
args7(2).Value = false
args7(3).Name = "Transpose"
args7(3).Value = false
args7(4).Name = "AsLink"
args7(4).Value = false
args7(5).Name = "MoveMode"
args7(5).Value = 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args7())
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
Dim sRota As String
Dim mArg()
Dim oDoc As Object
	sRota = ConvertToUrl( "C:\Users\GILBERTO\Desktop\arquivo2.ods" )  '<========   ATENÇÃO acertar rota.
	oDoc = StarDesktop.loadComponentFromURL( sRota, "_blank", 0, mArg() )
dim args5(0) as new com.sun.star.beans.PropertyValue
args5(0).Name = "ToPoint"
args5(0).Value = Var1
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args5())
dim args11(2) as new com.sun.star.beans.PropertyValue
args11(0).Name = "DocName"
args11(0).Value = "arquivo2"
args11(1).Name = "Index"
args11(1).Value = 32767
args11(2).Name = "Copy"
args11(2).Value = true
dispatcher.executeDispatch(document, ".uno:Move", "", 0, args11())
dim args8(0) as new com.sun.star.beans.PropertyValue
args8(0).Name = "ToPoint"
args8(0).Value = "FRONTEND"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args8())
dispatcher.executeDispatch(document, ".uno:Undo", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Undo", "", 0, Array())
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
End Sub

e a macro do arquivo 2:

'=============================
sub ArquivoSalvarFechar 'Arquivo ativo.
'=============================
dim document   as object
dim dispatcher as object
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
Wait 2000
dispatcher.executeDispatch(document, ".uno:Save", "", 0, Array())
Wait 2000
dispatcher.executeDispatch(document, ".uno:CloseDoc", "", 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.

Opa Gilberto, vi a sua reposta aqui. Baixei os dois arquivos e coloquei o caminho correto no primeiro, eu consigo ver ele renomando a planilha PLAN3, ele abre o arquivo destino, mas não está inserindo a planilha, usando o menu q você criou percebi que ele também não está salvando e fechando. Preciso configurar alguma coisa? Agradeço a ajuda e paciência.

@Regisfreitas, Testei novamente aqui e funciona parcialmente, como descrito na resposta, o Salvar e Fechar arquivo2 não consegui implementar, é manual no Menu criado.

.

Estando com o arquivo1 aberto, altere os dados no campo amarelo e acione o botão, ATENÇÃO deixar o editor do Basic fechado, notei que as vezes, da interferência na execução da macro.

Aqui funciona assim: Ao preencher os dados, acionar o botão, a Plan3 é renomeada e o FRONTEND é colado nela e o arquivo é salvo, é aberto o arquivo2 e adicionado a planilha nova ( aqui não consegui salvar e fechar, é manual pelo menu), no arquivo 1 volta a Plan3 vazia e o arquivo e salvo.

Tentei fazer gravação dela executando, mas não consegui definir os paramentos para a gravação pelo Win10.

Regis entre em contato direto: gilberto@schiavinatto.com ou gilbertoschiavinatto@yahoo.com.br

Desculpa não ter respondido onte, estava de folga aqui. Muito obrigado pelo seu trabalho, infelizmente pelo menos aqui ele não está jogando para o segundo arquivo de destino. Vou entrar em contato sim. Grato! :smiley: