Gestiona los códigos VBA de libros de Excel habilitados para macros.

Agregar un módulo de VBA en C#

El siguiente código de ejemplo crea un nuevo libro de trabajo y agrega un nuevo módulo de VBA y código de macro, y guarda la salida en formato XLSM. Una vez que abras el archivo de salida XLSM en Microsoft Excel y hagas clic en los comandos del menú Desarrollador > Visual Basic, verás un módulo llamado “TestModule” y dentro de él verás el siguiente código de macro.

 Sub ShowMessage()

    MsgBox "Welcome to Aspose!"

End Sub

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

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create new workbook
Workbook workbook = new Workbook();
// Access first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Add VBA Module
int idx = workbook.VbaProject.Modules.Add(worksheet);
// Access the VBA Module, set its name and codes
Aspose.Cells.Vba.VbaModule module = workbook.VbaProject.Modules[idx];
module.Name = "TestModule";
module.Codes = "Sub ShowMessage()" + "\r\n" +
" MsgBox \"Welcome to Aspose!\"" + "\r\n" +
"End Sub";
// Save the workbook
workbook.Save(dataDir + "output_out.xlsm", SaveFormat.Xlsm);

Modificar el VBA o Macro en C#

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

 Sub Button1_Click()

    MsgBox "This is test message."

End Sub

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."

End Sub

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

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create workbook object from source Excel file
Workbook workbook = new Workbook(dataDir + "sample.xlsm");
// Change the VBA Module Code
foreach (VbaModule module in workbook.VbaProject.Modules)
{
string code = module.Codes;
// Replace the original message with the modified message
if (code.Contains("This is test message."))
{
code = code.Replace("This is test message.", "This is Aspose.Cells message.");
module.Codes = code;
}
}
// Save the output Excel file
workbook.Save(dataDir + "output_out.xlsm");

Temas avanzados