Beheer VBA-projecten in presentaties met Java
Inleiding
Aspose.Slides biedt klassen en interfaces voor het werken met macro’s en VBA-code.
Note
Wanneer u een presentatie met macro’s converteert naar een ander bestandsformaat (PDF, HTML, enz.), negeert Aspose.Slides alle macro’s (macro’s worden niet overgenomen in het resulterende bestand).
Wanneer u macro’s toevoegt aan een presentatie of een presentatie met macro’s opnieuw opslaat, schrijft Aspose.Slides eenvoudigweg de bytes voor de macro’s.
Aspose.Slides nooit macro’s in een presentatie uitvoert.
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.
- Maak een instantie van de klasse Presentation.
- Gebruik de constructor van VbaProject om een nieuw VBA‑project toe te voegen.
- Voeg een module toe aan het VbaProject.
- Stel de broncode van de module in.
- Voeg referenties toe aan
. - Voeg referenties toe aan Microsoft Office.
- Koppel de referenties aan het VBA‑project.
- 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.
- Maak een instantie van de klasse Presentation en laad de presentatie die de macro bevat.
- Open de Macro‑module en verwijder deze.
- 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
- Maak een instantie van de klasse Presentation en laad de presentatie die de macro bevat.
- Controleer of de presentatie een VBA‑project bevat.
- 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.
- Maak een instantie van de klasse Presentation en laad een presentatie die een macro bevat.
- Controleer of de presentatie een VBA‑project bevat.
- 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.