Zarządzaj projektami VBA w prezentacjach przy użyciu JavaScript

Wprowadzenie

Aspose.Slides udostępnia klasy do pracy z makrami i kodem VBA.

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.

  1. Utwórz instancję klasy Presentation.
  2. Użyj konstruktora VbaProject aby dodać nowy projekt VBA.
  3. Dodaj moduł do VbaProject.
  4. Ustaw kod źródłowy modułu.
  5. Dodaj odwołania do .
  6. Dodaj odwołania do Microsoft Office.
  7. Powiąż odwołania z projektem VBA.
  8. 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.

  1. Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą makro.
  2. Uzyskaj dostęp do modułu Macro i usuń go.
  3. 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

  1. Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą makro.
  2. Sprawdź, czy prezentacja zawiera projekt VBA.
  3. 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.

  1. Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą makro.
  2. Sprawdź, czy prezentacja zawiera projekt VBA.
  3. 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.