Página 1 de 1

[Resuelto] macro: Ejecutar Macro en otro archivo

NotaPublicado: Lun Nov 12, 2018 1:04 pm
por physic
Estoy buscando una macro para mi Archivo A que ejecute lo siguiente en LibreOffice:

        es necesario pulsar el botón del archivo A para ejecutar una macro ubicada en el otro archivo B.

        tenga en cuenta:

        1) Ya estoy con el archivo B abierto.

        2) nombre de macro en el archivo B es:
   
           macro: Borrar_todo

           biblioteca: VBAProject

           módulo: Módulo1


     Gracias.

Re: macro: executar Macro en outro arquivo

NotaPublicado: Lun Nov 12, 2018 1:55 pm
por physic
yo trabajaba anteriormente con archivos Excel, donde tenía varias macros en la biblioteca VBAProject del archivo Excel.

            hice la conversión de Archivo.xls a Archivo.ods, y la biblioteca VBAProject se mantuvo con el mismo nombre en el nuevo archivo .ods.

            es decir, el nuevo archivo convertido a .ODS, contiene la biblioteca STANDARD y también la biblioteca VBAProject.

            Usted puede ayudarme a crear el comando para ejecutar la macro en el archivo B, utilizando el nombre de esa biblioteca VBAProject.

            entonces haré las pruebas aquí para comprobar lo que va a suceder.


muchas gracias.

Re: macro: executar Macro en outro arquivo

NotaPublicado: Lun Nov 12, 2018 7:32 pm
por fornelasa
Solo para no dejar ¿cómo lo hacías en VBA, puedes comentarlo?
Saludos, Federico.

Re: macro: executar Macro en outro arquivo

NotaPublicado: Lun Nov 12, 2018 10:07 pm
por physic
Se ejecuta así en VBA de Excel: Application.Run "Book1.xls! MyMacroName"

ver el ejemplo: https://www.rondebruin.nl/win/s9/win001.htm


abrazos.

Re: macro: executar Macro en outro arquivo

NotaPublicado: Mar Nov 13, 2018 12:24 am
por fornelasa
hice la conversión de Archivo.xls a Archivo.ods, y la biblioteca VBAProject se mantuvo con el mismo nombre en el nuevo archivo .ods.
Entiendo que el archivo tiene extensión .ods
contiene la biblioteca STANDARD y también la biblioteca VBAProject
Módulo1
el nombre del modulo debe ser exacto
Ya estoy con el archivo B abierto
el archivo A y el B están abiertos

Una guía de como hacerlo:
Código: Seleccionar todo   Expandir vistaContraer vista
Sub RunMacroDeOtroArchivo()
    GlobalScope.BasicLibraries.LoadLibrary("Tools")
    nombre = "B.ods"   
     oDocs = StarDesktop.getComponents().createEnumeration()
    Do While oDocs.hasMoreElements()
      oDoc = oDocs.nextElement()
         If HasUnoInterfaces(oDoc, "com.sun.star.frame.XModel") Then
         If oDoc.hasLocation() Then
         If oDoc.Title = nombre Then
    StarDesktop.setActiveFrame(oDoc.CurrentController.Frame)
    oDoc.CurrentController.Frame.ContainerWindow.toFront()
    oDoc.BasicLibraries.loadLibrary("Standard")
    Set scriptProvider = oDoc.getScriptProvider()
        proveedor = scriptProvider.getScript("vnd.sun.star.script:VBAProject.Módulo1.NombreDeTuMacro?language=Basic&location=document")
    proveedor.invoke(array(), array(), array())
       End if
       End If
       End If
Loop
End Sub
No quites el signo de interrogación en NombreDeTuMacro?

Re: macro: Ejecutar Macro en otro archivo

NotaPublicado: Mar Nov 13, 2018 11:10 am
por physic
felicitaciones ,

             la macro funcionó perfectamente .


muchas gracias !