Správa VBA projektů v prezentacích pomocí JavaScriptu
Úvod
Aspose.Slides poskytuje třídy pro práci s makry a kódem VBA.
Note
Pokud při převodu prezentace obsahující makra do jiného formátu souboru (PDF, HTML, atd.) Aspose.Slides ignoruje všechna makra (makra nejsou přenesena do výsledného souboru).
Když přidáte makra do prezentace nebo znovu uložíte prezentaci obsahující makra, Aspose.Slides jednoduše zapíše bajty makr.
Aspose.Slides nikdy nespouští makra v prezentaci.
Přidání VBA maker
Aspose.Slides poskytuje třídu VbaProject , která vám umožní vytvářet VBA projekty (a odkazy na projekty) a upravovat existující moduly. Můžete použít třídu VbaProject k správě VBA vloženého v prezentaci.
- Vytvořte instanci třídy Presentation .
- Použijte konstruktor VbaProject k přidání nového VBA projektu.
- Přidejte modul do VbaProject.
- Nastavte zdrojový kód modulu.
- Přidejte odkazy na
. - Přidejte odkazy na Microsoft Office.
- Propojte odkazy s VBA projektem.
- Uložte prezentaci.
Tento JavaScriptový kód ukazuje, jak od začátku přidat VBA makro do prezentace:
// Vytvoří instanci třídy prezentace
let pres = new aspose.slides.Presentation();
try {
// Vytvoří nový VBA projekt
pres.setVbaProject(new aspose.slides.VbaProject());
// Přidá prázdný modul do VBA projektu
let module = pres.getVbaProject().getModules().addEmptyModule("Module");
// Nastaví zdrojový kód modulu
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// Vytvoří odkaz na <stdole>
let stdoleReference = new aspose.slides.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Vytvoří odkaz na 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");
// Přidá odkazy do VBA projektu
pres.getVbaProject().getReferences().add(stdoleReference);
pres.getVbaProject().getReferences().add(officeReference);
// Uloží prezentaci
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
Odstranění VBA maker
Pomocí vlastnosti VbaProject třídy Presentation můžete odstranit VBA makro.
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
- Získejte přístup k modulu Macro a odstraňte jej.
- Uložte upravenou prezentaci.
Tento JavaScriptový kód ukazuje, jak odstranit VBA makro:
// Načte prezentaci obsahující makro
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Přistoupí k modulu Vba a odebere jej
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// Uloží prezentaci
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
Extrahování VBA maker
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
- Zkontrolujte, zda prezentace obsahuje VBA projekt.
- Procházejte všechny moduly obsažené ve VBA projektu a zobrazte makra.
Tento JavaScriptový kód ukazuje, jak extrahovat VBA makra z prezentace obsahující makra:
// Načte prezentaci obsahující makro
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Zkontroluje, zda prezentace obsahuje VBA projekt
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();
}
}
Kontrola, zda je VBA projekt chráněn heslem
Pomocí metody VbaProject.isPasswordProtected můžete zjistit, zda jsou vlastnosti projektu chráněny heslem.
- Vytvořte instanci třídy Presentation a načtěte prezentaci, která obsahuje makro.
- Zkontrolujte, zda prezentace obsahuje VBA projekt.
- Zkontrolujte, zda je VBA projekt chráněn heslem, abyste mohli zobrazit jeho vlastnosti.
let presentation = new aspose.slides.Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // Zkontrolujte, zda prezentace obsahuje VBA projekt.
if (presentation.getVbaProject().isPasswordProtected()) {
console.log("The VBA Project '%s' is protected by password to view project properties.",
presentation.getVbaProject().getName());
}
}
} finally {
presentation.dispose();
}
Často kladené otázky
Co se stane s makry, pokud uložíme prezentaci jako PPTX?
Makra budou odstraněna, protože PPTX nepodporuje VBA. Pro zachování maker zvolte PPTM, PPSM nebo POTM.
Může Aspose.Slides spouštět makra v prezentaci, například pro aktualizaci dat?
Ne. Knihovna nikdy nespouští VBA kód; spuštění je možné pouze v PowerPointu s odpovídajícím nastavením zabezpečení.
Je podporována práce s ActiveX ovladači propojenými s VBA kódem?
Ano, můžete přistupovat k existujícím ActiveX ovladačům, upravovat jejich vlastnosti a odstraňovat je. To je užitečné, když makra interagují s ActiveX.