Beheer VBA-projecten in presentaties met Java

Inleiding

Aspose.Slides biedt klassen en interfaces voor het werken met macro’s en VBA-code.

VBA-macro’s toevoegen

Aspose.Slides biedt de klasse VbaProject om VBA‑projecten (en project‑referenties) te maken en bestaande modules te bewerken. U kunt de interface IVbaProject gebruiken om VBA die in een presentatie is ingebed te beheren.

  1. Maak een instantie van de klasse Presentation.
  2. Gebruik de constructor van VbaProject om een nieuw VBA‑project toe te voegen.
  3. Voeg een module toe aan het VbaProject.
  4. Stel de broncode van de module in.
  5. Voeg referenties toe aan .
  6. Voeg referenties toe aan Microsoft Office.
  7. Koppel de referenties aan het VBA‑project.
  8. Sla de presentatie op.

Deze Java‑code laat zien hoe u vanaf nul een VBA‑macro aan een presentatie toevoegt:

// Maakt een instantie van de presentatieklasse
Presentation pres = new Presentation();
try {
    // Maakt een nieuw VBA-project
    pres.setVbaProject(new VbaProject());
    
    // Voegt een lege module toe aan het VBA-project
    IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
    
    // Stelt de broncode van de module in
    module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
    
    // Creëert een referentie naar <stdole>
    VbaReferenceOleTypeLib stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
    
    // Creëert een referentie naar Office
    VbaReferenceOleTypeLib 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");
    
    // Voegt referenties toe aan het VBA-project
    pres.getVbaProject().getReferences().add(stdoleReference);
    pres.getVbaProject().getReferences().add(officeReference);
   
    // Slaat de presentatie op
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

VBA-macro’s verwijderen

Met behulp van de eigenschap VbaProject onder de klasse Presentation kunt u een VBA‑macro verwijderen.

  1. Maak een instantie van de klasse Presentation en laad de presentatie die de macro bevat.
  2. Open de Macro‑module en verwijder deze.
  3. Sla de aangepaste presentatie op.

Deze Java‑code laat zien hoe u een VBA‑macro verwijdert:

// Laadt de presentatie met de macro
Presentation pres = new Presentation("VBA.pptm");
try {
    // Toegang tot de Vba-module en verwijdert deze 
    pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
    
    // Slaat de presentatie op
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

VBA-macro’s extraheren

  1. Maak een instantie van de klasse Presentation en laad de presentatie die de macro bevat.
  2. Controleer of de presentatie een VBA‑project bevat.
  3. Loop door alle modules in het VBA‑project om de macro’s te bekijken.

Deze Java‑code laat zien hoe u VBA‑macro’s uit een presentatie met macro’s extraheert:

// Laadt de presentatie met de macro
Presentation pres = new Presentation("VBA.pptm");
try {
    if (pres.getVbaProject() != null) // Controleert of de presentatie een VBA-project bevat
    {
        for (IVbaModule module : pres.getVbaProject().getModules())
        {
            System.out.println(module.getName());
            System.out.println(module.getSourceCode());
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Controleren of een VBA‑project met wachtwoord is beveiligd

Met de methode IVbaProject.isPasswordProtected kunt u bepalen of de eigenschappen van een project met een wachtwoord zijn beveiligd.

  1. Maak een instantie van de klasse Presentation en laad een presentatie die een macro bevat.
  2. Controleer of de presentatie een VBA‑project bevat.
  3. Controleer of het VBA‑project met een wachtwoord is beveiligd om de eigenschappen te bekijken.
Presentation presentation = new Presentation("VBA.pptm");
try {
    if (presentation.getVbaProject() != null) { // Controleer of de presentatie een VBA-project bevat.
        if (presentation.getVbaProject().isPasswordProtected()) {
            System.out.printf("The VBA Project '%s' is protected by password to view project properties.", 
                    presentation.getVbaProject().getName());
        }
    }
} finally {
    presentation.dispose();
}

FAQ

Wat gebeurt er met macro’s als ik de presentatie opsla als PPTX?

Macro’s worden verwijderd omdat PPTX geen VBA ondersteunt. Om macro’s te behouden, kiest u PPTM, PPSM of POTM.

Kan Aspose.Slides macro’s binnen een presentatie uitvoeren, bijvoorbeeld om gegevens te vernieuwen?

Nee. De bibliotheek voert nooit VBA‑code uit; uitvoering is alleen mogelijk in PowerPoint met de juiste beveiligingsinstellingen.

Wordt werken met ActiveX‑besturingselementen gekoppeld aan VBA‑code ondersteund?

Ja, u kunt bestaande ActiveX‑besturingselementen benaderen, hun eigenschappen wijzigen en ze verwijderen. Dit is nuttig wanneer macro’s met ActiveX communiceren.