Zarządzaj projektami VBA w prezentacjach przy użyciu JavaScript
Wprowadzenie
Aspose.Slides udostępnia klasy do pracy z makrami i kodem VBA.
Note
Kiedy konwertujesz prezentację zawierającą makra na inny format pliku (PDF, HTML itp.), Aspose.Slides ignoruje wszystkie makra (makra nie są przenoszone do powstałego pliku).
Kiedy dodajesz makra do prezentacji lub ponownie zapisujesz prezentację zawierającą makra, Aspose.Slides po prostu zapisuje bajty makr.
Aspose.Slides nigdy nie uruchamia makr w prezentacji.
Dodaj makra VBA
Aspose.Slides udostępnia klasę VbaProject, która pozwala tworzyć projekty VBA (i odwołania do projektów) oraz edytować istniejące moduły. Możesz używać klasy VbaProject do zarządzania VBA osadzonym w prezentacji.
- Utwórz instancję klasy Presentation.
- Użyj konstruktora VbaProject aby dodać nowy projekt VBA.
- Dodaj moduł do VbaProject.
- Ustaw kod źródłowy modułu.
- Dodaj odwołania do
. - Dodaj odwołania do Microsoft Office.
- Powiąż odwołania z projektem VBA.
- Zapisz prezentację.
Ten kod JavaScript pokazuje, jak dodać makro VBA od podstaw do prezentacji:
// Tworzy instancję klasy prezentacji
let pres = new aspose.slides.Presentation();
try {
// Tworzy nowy projekt VBA
pres.setVbaProject(new aspose.slides.VbaProject());
// Dodaje pusty moduł do projektu VBA
let module = pres.getVbaProject().getModules().addEmptyModule("Module");
// Ustawia kod źródłowy modułu
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// Tworzy odwołanie do <stdole>
let stdoleReference = new aspose.slides.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Tworzy odwołanie do 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");
// Dodaje odwołania do projektu VBA
pres.getVbaProject().getReferences().add(stdoleReference);
pres.getVbaProject().getReferences().add(officeReference);
// Zapisuje prezentację
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
Usuń makra VBA
Korzystając z właściwości VbaProject w klasie Presentation, możesz usunąć makro VBA.
- Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą makro.
- Uzyskaj dostęp do modułu Macro i usuń go.
- Zapisz zmodyfikowaną prezentację.
Ten kod JavaScript pokazuje, jak usunąć makro VBA:
// Ładuje prezentację zawierającą makro
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Uzyskuje dostęp do modułu Vba i usuwa go
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// Zapisuje prezentację
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
Wyodrębnij makra VBA
- Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą makro.
- Sprawdź, czy prezentacja zawiera projekt VBA.
- Iteruj po wszystkich modułach zawartych w projekcie VBA, aby zobaczyć makra.
Ten kod JavaScript pokazuje, jak wyodrębnić makra VBA z prezentacji zawierającej makra:
// Ładuje prezentację zawierającą makro
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Sprawdza, czy prezentacja zawiera projekt VBA
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();
}
}
Sprawdź, czy projekt VBA jest chroniony hasłem
Korzystając z metody VbaProject.isPasswordProtected, możesz określić, czy właściwości projektu są chronione hasłem.
- Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą makro.
- Sprawdź, czy prezentacja zawiera projekt VBA.
- Sprawdź, czy projekt VBA jest chroniony hasłem, aby wyświetlić jego właściwości.
let presentation = new aspose.slides.Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // Sprawdź, czy prezentacja zawiera projekt VBA.
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
Co się dzieje z makrami, jeśli zapisuję prezentację jako PPTX?
Makra zostaną usunięte, ponieważ format PPTX nie obsługuje VBA. Aby zachować makra, wybierz PPTM, PPSM lub POTM.
Czy Aspose.Slides może uruchamiać makra w prezentacji, np. odświeżać dane?
Nie. Biblioteka nigdy nie wykonuje kodu VBA; wykonywanie jest możliwe wyłącznie w PowerPoint z odpowiednimi ustawieniami zabezpieczeń.
Czy obsługa kontrolek ActiveX powiązanych z kodem VBA jest wspierana?
Tak, możesz uzyskać dostęp do istniejących kontrolek ActiveX, modyfikować ich właściwości i usuwać je. Jest to przydatne, gdy makra współdziałają z ActiveX.