Gestionar códigos VBA del libro de trabajo habilitado para macros de Excel

Agregar un módulo VBA en Node.js

El siguiente código de ejemplo crea un nuevo libro de trabajo y añade un nuevo módulo VBA y Código Macro y guarda la salida en formato XLSM. Una vez que abras el archivo XLSM en Microsoft Excel y hagas clic en Desarrollador > Visual Basic, verás un módulo llamado “TestModule” y en su interior, el siguiente código macro.

Sub ShowMessage() {
    MsgBox "Welcome to Aspose!"
}

Aquí tienes el código de ejemplo para generar el archivo XLSM de salida con módulo VBA y código macro.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");

// Create new workbook
const workbook = new AsposeCells.Workbook();

// Access first worksheet
const worksheet = workbook.getWorksheets().get(0);

// Add VBA Module
const idx = workbook.getVbaProject().getModules().add(worksheet);

// Access the VBA Module, set its name and codes
const module = workbook.getVbaProject().getModules().get(idx);
module.setName("TestModule");

module.setCodes("Sub ShowMessage()" + "\r\n" +
"    MsgBox \"Welcome to Aspose!\"" + "\r\n" +
"End Sub");

// Save the workbook
workbook.save(path.join(dataDir, "output_out.xlsm"), AsposeCells.SaveFormat.Xlsm);

Modificar VBA o Macro en Node.js

El siguiente código de ejemplo carga el archivo de Excel fuente que contiene el siguiente código VBA o Macro:

Sub Button1_Click() {
    MsgBox "This is test message."
}

Después de la ejecución del código de ejemplo de Aspose.Cells, el código de VBA o macro será modificado de la siguiente manera

Sub Button1_Click() {
    MsgBox "This is Aspose.Cells message."
}

Puedes descargar el archivo de Excel fuente y el archivo de Excel de salida desde los enlaces proporcionados.

const path = require("path");
const AsposeCells = require("aspose.cells.node");

// The path to the documents directory.
const dataDir = path.join(__dirname, "data");
// Create workbook object from source Excel file
const workbook = new AsposeCells.Workbook(path.join(dataDir, "sample.xlsm"));

// Change the VBA Module Code
const modules = workbook.getVbaProject().getModules();
const moduleCount = modules.getCount();
for (let i = 0; i < moduleCount; i++) {
const module = modules.get(i);
const code = module.getCodes();
if (code.includes("This is test message.")) 
{
code = code.replace("This is test message.", "This is Aspose.Cells message.");
module.setCodes(code);
}
}


// Save the output Excel file
workbook.save(path.join(dataDir, "output_out.xlsm"));

Temas avanzados