Beheer VBA-projecten in presentaties met JavaScript
Inleiding
Aspose.Slides biedt klassen voor werken met macro’s en VBA-code.
Opmerking
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 meegebracht naar het resulterende bestand).
Wanneer u macro’s toevoegt aan een presentatie of een presentatie met macro’s opnieuw opslaat, schrijft Aspose.Slides simpelweg de bytes voor de macro’s.
Aspose.Slides loopt nooit de macro’s in een presentatie uit.
VBA-macro’s toevoegen
Aspose.Slides biedt de VbaProject klasse om VBA‑projecten (en projectreferenties) te maken en bestaande modules te bewerken. U kunt de VbaProject klasse gebruiken om VBA in een presentatie te beheren.
- Maak een instantie van de Presentation klasse.
- Gebruik de VbaProject constructor 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 JavaScript‑code laat zien hoe u van nul een VBA‑macro aan een presentatie toevoegt:
// Maakt een instantie van de presentatieklasse
let pres = new aspose.slides.Presentation();
try {
// Maakt een nieuw VBA-project
pres.setVbaProject(new aspose.slides.VbaProject());
// Voegt een lege module toe aan het VBA-project
let module = pres.getVbaProject().getModules().addEmptyModule("Module");
// Stelt de broncode van de module in
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// Maakt een referentie naar <stdole>
let stdoleReference = new aspose.slides.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Maakt een referentie naar Office
let officeReference = new aspose.slides.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", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
VBA-macro’s verwijderen
Met de VbaProject eigenschap onder de Presentation klasse kunt u een VBA‑macro verwijderen.
- Maak een instantie van de Presentation klasse en laad de presentatie die de macro bevat.
- Toegang tot de macro‑module en verwijder deze.
- Sla de gewijzigde presentatie op.
Deze JavaScript‑code laat zien hoe u een VBA‑macro verwijdert:
// Laadt de presentatie die de macro bevat
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Benadert de Vba-module en verwijdert deze
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// Slaat de presentatie op
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
VBA-macro’s extraheren
- Maak een instantie van de Presentation klasse en laad de presentatie die de macro bevat.
- Controleer of de presentatie een VBA‑project bevat.
- Doorloop alle modules in het VBA‑project om de macro’s te bekijken.
Deze JavaScript‑code laat zien hoe u VBA‑macro’s uit een presentatie met macro’s extraheert:
// Laadt de presentatie die de macro bevat
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Controleert of de presentatie een VBA-project bevat
if (pres.getVbaProject() != null) {
for (let i = 0; i < pres.getVbaProject().getModules().size(); i++) {
let module = pres.getVbaProject().getModules().get_Item(i);
console.log(module.getName());
console.log(module.getSourceCode());
}
}
} finally {
if (pres != null) {
pres.dispose();
}
}
Controleren of een VBA‑project met een wachtwoord is beveiligd
Met de VbaProject.isPasswordProtected methode kunt u bepalen of de eigenschappen van een project met een wachtwoord zijn beveiligd.
- Maak een instantie van de Presentation klasse 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.
let presentation = new aspose.slides.Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // Controleer of de presentatie een VBA-project bevat.
if (presentation.getVbaProject().isPasswordProtected()) {
console.log("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 in een presentatie uitvoeren om bijvoorbeeld gegevens te vernieuwen?
Nee. De bibliotheek voert nooit VBA‑code uit; uitvoering is alleen mogelijk in PowerPoint met de juiste beveiligingsinstellingen.
Wordt er gewerkt met ActiveX‑besturingselementen gekoppeld aan VBA‑code ondersteund?
Ja, u kunt bestaande ActiveX controls benaderen, hun eigenschappen wijzigen en ze verwijderen. Dit is nuttig wanneer macro’s interageren met ActiveX.