Pergunte aqui
2

acionar macro de outra planilha

perguntadas 2017-01-31 20:59:31 +0200

updated 2017-04-02 17:03:59 +0200

imagem do gravatar de Grafeno

Tenho 2 arquivos, arquivo1.ods e arquivo2.ods

gostaria de trabralhar com apenas um deles aberto, o arquivo1.ods

no arquivo2 tenho uma macro chamada JJ

e no arquivo1 quero criar uma macro que abra o arquivo2 em oculto e execute a macro JJ

a macro que escrevi é:

Dim oProps(0) As New com.sun.star.beans.PropertyValue
oProps(0).Name = "Hidden"
oProps(0).Value = True

sURL = convertToURL( "D:\Arquivo2.ods" ) 
oDoc2 = StarDesktop.loadComponentFromURL( sURL, "_blank", 0, oProps() )

call JJ'          acredito que aqui está o erro! (lembrando que a macro JJ nao existe no arquivo1, existe no arquivo2 ! )

oDoc2.Store()

oDoc2.Close( True )
editar alterar tag assinalar como ofensivo fechar mesclar Excluir

3 Respostas

2

respondidas 2017-02-03 12:18:15 +0200

imagem do gravatar de Grafeno

Bom dia,

Por acaso encontrei o que você procura. O procedimento abaixo executa uma macro chamada "MyMacro" na biblioteca "Standard" no módulo "Module1" de outro arquivo. Ele é aberto de forma oculta e depois de executar a macro é colocado visível.

Sub ManipulateHiddenDoc
   Dim oDoc
   Dim oVal(1) As New com.sun.star.beans.PropertyValue
   Dim oscriptProvider
   Dim oScript

   oVal(0).Name = "Hidden"
   oVal(0).Value = True
   oVal(1).Name = "MacroExecutionMode"
   oVal(1).Value = com.sun.star.document.MacroExecMode.ALWAYS_EXECUTE_NO_WARN

   oDoc = StarDesktop.loadComponentFromURL("file:///c:/tmp/a.odt", " blank", 0, oVal())
   oscriptProvider = oDoc.getScriptProvider()
   oScript = oscriptProvider.getScript("vnd.sun.star.script:Standard.Module1.MyMacro?language=Basic&location=document")
   oScript.invoke(array(), array(), array())
   Wait 5000
   oDoc.CurrentController.Frame.ContainerWindow.Visible = True
   oDoc.CurrentController.Frame.ContainerWindow.toFront()
End Sub

Fonte: https://forum.openoffice.org/en/forum/viewtopic.php?f=25&t=44563#p205938

Atte,

editar assinalar como ofensivo Excluir Link mais

Comentários

1

Muito obrigado @Grafeno! vou testar...

imagem do gravatar de Juan.rbaJuan.rba ( 2017-02-03 14:41:21 +0200 )editar
1

respondidas 2017-01-31 21:03:12 +0200

updated 2017-01-31 21:04:45 +0200

Se esta macro só é executada neste computador, salve as macros em "Minhas macros". desta maneira pode ser acionada sem os arquivos estarem abertos. (oi juan.rba, me desculpe exclui por engano, era para editar, mas consegui recuperar)

editar assinalar como ofensivo Excluir Link mais

Comentários

Olá Gilberto, muito obrigado pela dica!! mas a macro tem que ser executada no arquivo2 que esta em oculto... isso é possivel? eu consigo inserir dados e tudo mais.... mas é possivel executar uma em um arquivo que esta oculto?

imagem do gravatar de Juan.rbaJuan.rba ( 2017-02-01 10:34:27 +0200 )editar
1

Oi @Juan.rba, a informação que o arquivo1 busca no arquivo2 é pontual, se sim, pode-se fazer o link diretamente !!!!! tipo: ='file:///E:/Diretório/arquivo2.ods'#aba.C2

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2017-02-02 00:55:30 +0200 )editar

Olá Gilberto, a macro pega informações no arquivo 1, insere eles no arquivo 2, após isso vou até o arquivo 2 e executo uma macro que salva planilhas em txt.... minha vontade era acabar esse processo, na mesma macro que executo no arquivo 1, que abre o arquivo2 em oculto para inserir dados já acionasse a macro para salvar em txt... isso é possivel?

imagem do gravatar de Juan.rbaJuan.rba ( 2017-02-02 10:52:55 +0200 )editar

Infelizmente saiu do meu nível de conhecimento sobre macros, fico devendo.

imagem do gravatar de Gilberto SchiavinattoGilberto Schiavinatto ( 2017-02-03 02:04:46 +0200 )editar
1

muito obrigado Gilberto!, vou continuar buscando...

imagem do gravatar de Juan.rbaJuan.rba ( 2017-02-03 11:03:53 +0200 )editar
0

respondidas 2017-02-03 16:17:53 +0200

imagem do gravatar de Juan.rba

C:\fakepath\problema.ods(/upfiles/1486134746315168.ods)

@Grafeno anexei os arquivos que fiz o teste, para vc entender melhor, a macro abre o arquivo em oculto executa porem não funciona como deveria, a macro deveria gravar a planilha2,3,4,5 e 6 como txt, e realmente ela salva 5arquivos txt mas todos eles iguais, coisa que se acionar a macro direto pela planilha cada txt é diferente....

editar assinalar como ofensivo Excluir Link mais

Comentários

Meu palpite é que o problema está no filtro que salva csv/txt com a limitação de salvar a planilha ativa no momento. Como você abre o arquivo 2 de forma oculta, o filtro não trabalha corretamente. Experimente definir a planilha como visível antes de chamar a macro. Atte,

imagem do gravatar de GrafenoGrafeno ( 2017-02-03 16:55:46 +0200 )editar

é isso mesmo @Grafeno, se deixar visivel funciona perfeitamente, vc conhece algum filtro que salva a planilha em cvs/txt sem a necessidade de deixar a planilha ativa? desde já obriogado!

imagem do gravatar de Juan.rbaJuan.rba ( 2017-02-03 17:11:25 +0200 )editar

Não exatamente um filtro, mas me ocorreu que é possível em basic escrever linha por linha diretamente em um arquivo txt usando a Instrução Print. Então pesquisei e encontrei ESTE EXEMPLO. Quem sabe já não ajude seu caso. Atte,

imagem do gravatar de GrafenoGrafeno ( 2017-02-03 18:56:40 +0200 )editar
Login/Registrar para responder

Ferramentas de perguntas

1 seguidor

Estatísticas

Perguntadas: 2017-01-31 20:59:31 +0200

Lidas: 704 vezes

Última atualização: Feb 03 '17