Saltar al contenido

¿Cómo llamar a una macro desde la biblioteca Apache POI en Java?

Este post fue aprobado por nuestros expertos así garantizamos la exactitud de nuestro tutorial.

Solución:

No creo que esto sea posible. POI es una biblioteca para leer/editar archivos de Office, las macros son otra bestia. Tendría que implementar un Intérprete de Visual Basic para Aplicaciones en POI para lograr esto. Las macros que ya están en su libro de Excel se conservan, pero no puede agregar nuevas ni llamar a las existentes.

Puede usar otra herramienta como com4j. Creé un POC hoy y funciona de maravilla. Solo sigue estos pasos:

  1. Descarga la última versión aquí
  2. Usando Apache Ant construye la muestra: muestrasexcel
  3. Con el código generado por tlbimp (es solo una parte de com4j), cree una pequeña aplicación y escriba un código como:

    // Starts excel and open an existing workbook
    _Application app = ClassFactory.createApplication();
    app.setVisible(0, true);
    _Workbook wb = app.getWorkbooks().open("c:\test.xlsx", null, null, null, null, null, null, null,
            null, null, null, null, null, null, null, 0);
    
    // run a macro
    Variant macro = new Variant(Variant.Type.VT_BSTR);
    macro.set("my_macro");
    wb.getApplication().run(macro, null, null, null, null, null, null, null, null, null, null, null,
            null, null, null, null, null, null, null, null, null, null, null, null, null, null, null,
            null, null, null, null);
    
    // Save the excel file and quit
    Variant saveBeforeExit = new Variant(Variant.Type.VT_BOOL);
    saveBeforeExit.set(1);
    wb.close(saveBeforeExit, Variant.getMissing(), Variant.getMissing(), 0);
    app.quit();
    
  4. Más ejemplos: tutoriales de com4j

Creo que no puedes.

macros

No se pueden crear macros. Sin embargo, leer y volver a escribir archivos que contengan macros conservará las macros de forma segura.

Limitaciones de puntos de interés de Apache

Sección de Reseñas y Valoraciones

Recuerda algo, que te brindamos la opción de añadir una estimación objetiva .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *