Presentación a través de VBA
Nota
Cuando conviertes una presentación que contiene macros a un formato de archivo diferente (PDF, HTML, etc.), Aspose.Slides ignora todas las macros (las macros no se transfieren al archivo resultante).
Cuando agregas macros a una presentación o vuelves a guardar una presentación que contiene macros, Aspose.Slides simplemente escribe los bytes de las macros.
Aspose.Slides nunca ejecuta las macros en una presentación.
Agregar Macros VBA
Aspose.Slides proporciona la clase VbaProject para permitirte crear proyectos VBA (y referencias de proyecto) y editar módulos existentes. Puedes usar la interfaz IVbaProject para gestionar el VBA integrado en una presentación.
- Crea una instancia de la clase Presentation.
- Utiliza el constructor VbaProject para agregar un nuevo proyecto VBA.
- Agrega un módulo al VbaProject.
- Establece el código fuente del módulo.
- Agrega referencias a
. - Agrega referencias a Microsoft Office.
- Asocia las referencias con el proyecto VBA.
- Guarda la presentación.
Este código PHP te muestra cómo agregar una macro VBA desde cero a una presentación:
# Crea una instancia de la clase presentation
$pres = new Presentation();
try {
# Crea un nuevo proyecto VBA
$pres->setVbaProject(new VbaProject());
# Agrega un módulo vacío al proyecto VBA
$module = $pres->getVbaProject()->getModules()->addEmptyModule("Módulo");
# Establece el código fuente del módulo
$module->setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
# Crea una referencia a <stdole>
$stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
# Crea una referencia a Office
$officeReference = new VbaReferenceOleTypeLib("Office", "*\\G{2DF8D04C-5BFA-101B-BDE5-00AA0044DE52}#2.0#0#C:\\Program Files\\Common Files\\Microsoft Shared\\OFFICE14\\MSO.DLL#Microsoft Office 14.0 Object Library");
# Agrega referencias al proyecto VBA
$pres->getVbaProject()->getReferences()->add($stdoleReference);
$pres->getVbaProject()->getReferences()->add($officeReference);
# Guarda la presentación
$pres->save("test.pptm", SaveFormat::Pptm);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Eliminar Macros VBA
Usando la propiedad VbaProject en la clase Presentation, puedes eliminar una macro VBA.
- Crea una instancia de la clase Presentation y carga la presentación que contiene la macro.
- Accede al módulo Macro y elimínalo.
- Guarda la presentación modificada.
Este código PHP te muestra cómo eliminar una macro VBA:
# Carga la presentación que contiene la macro
$pres = new Presentation("VBA.pptm");
try {
# Accede al módulo Vba y lo elimina
$pres->getVbaProject()->getModules()->remove($pres->getVbaProject()->getModules()->get_Item(0));
# Guarda la presentación
$pres->save("test.pptm", SaveFormat::Pptm);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Extraer Macros VBA
- Crea una instancia de la clase Presentation y carga la presentación que contiene la macro.
- Verifica si la presentación contiene un proyecto VBA.
- Recorre todos los módulos contenidos en el proyecto VBA para ver las macros.
Este código PHP te muestra cómo extraer macros VBA de una presentación que contiene macros:
# Carga la presentación que contiene la macro
$pres = new Presentation("VBA.pptm");
try {
# Verifica si la presentación contiene un proyecto VBA
if (!java_is_null($pres->getVbaProject())) {
foreach($pres->getVbaProject()->getModules() as $module) {
echo($module->getName());
echo($module->getSourceCode());
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}