Διαχείριση έργων VBA σε παρουσιάσεις χρησιμοποιώντας JavaScript
Εισαγωγή
Aspose.Slides παρέχει κλάσεις για εργασία με μακροεντολές και κώδικα VBA.
Note
Όταν μετατρέπετε μια παρουσίαση που περιέχει μακροεντολές σε διαφορετική μορφή αρχείου (PDF, HTML κ.λπ.), το Aspose.Slides αγνοεί όλες τις μακροεντολές (οι μακροεντολές δεν μεταφέρονται στο παραγόμενο αρχείο).
Όταν προσθέτετε μακροεντολές σε μια παρουσίαση ή αποθηκεύετε ξανά μια παρουσίαση που περιέχει μακροεντολές, το Aspose.Slides απλώς γράφει τα byte των μακροεντολών.
Το Aspose.Slides ποτέ δεν εκτελεί τις μακροεντολές σε μια παρουσίαση.
Προσθήκη VBA Μακροεντολών
Το Aspose.Slides παρέχει την κλάση VbaProject για να σας επιτρέψει να δημιουργήσετε έργα VBA (και αναφορές έργου) και να επεξεργαστείτε υπάρχουσες μονάδες. Μπορείτε να χρησιμοποιήσετε την κλάση VbaProject για να διαχειριστείτε το VBA ενσωματωμένο σε μια παρουσίαση.
- Δημιουργήστε μια παρουσία της κλάσης Presentation.
- Χρησιμοποιήστε τον κατασκευαστή VbaProject για να προσθέσετε ένα νέο έργο VBA.
- Προσθέστε μια μονάδα στο VbaProject.
- Ορίστε τον πηγαίο κώδικα της μονάδας.
- Προσθέστε αναφορές στο
. - Προσθέστε αναφορές στο Microsoft Office.
- Συσχετίστε τις αναφορές με το έργο VBA.
- Αποθηκεύστε την παρουσίαση.
// Δημιουργεί ένα στιγμιότυπο της κλάσης παρουσίασης
let pres = new aspose.slides.Presentation();
try {
// Δημιουργεί ένα νέο έργο VBA
pres.setVbaProject(new aspose.slides.VbaProject());
// Προσθέτει μια κενή μονάδα στο έργο VBA
let module = pres.getVbaProject().getModules().addEmptyModule("Module");
// Ορίζει τον πηγαίο κώδικα της μονάδας
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// Δημιουργεί μια αναφορά στο <stdole>
let stdoleReference = new aspose.slides.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Δημιουργεί μια αναφορά στο 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");
// Προσθέτει αναφορές στο έργο VBA
pres.getVbaProject().getReferences().add(stdoleReference);
pres.getVbaProject().getReferences().add(officeReference);
// Αποθηκεύει την παρουσίαση
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
Κατάργηση VBA Μακροεντολών
Χρησιμοποιώντας την ιδιότητα VbaProject της κλάσης Presentation, μπορείτε να καταργήσετε μια μακροεντολή VBA.
- Δημιουργήστε μια παρουσία της κλάσης Presentation και φορτώστε την παρουσίαση που περιέχει τη μακροεντολή.
- Πρόσβαση στη μονάδα Macro και κατάργησή της.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
// Φορτώνει την παρουσίαση που περιέχει τη μακροεντολή
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Πρόσβαση στη μονάδα Vba και κατάργησή της
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// Αποθηκεύει την παρουσίαση
pres.save("test.pptm", aspose.slides.SaveFormat.Pptm);
} finally {
if (pres != null) {
pres.dispose();
}
}
Εξαγωγή VBA Μακροεντολών
- Δημιουργήστε μια παρουσία της κλάσης Presentation και φορτώστε την παρουσίαση που περιέχει τη μακροεντολή.
- Ελέγξτε αν η παρουσίαση περιέχει ένα έργο VBA.
- Περιηγηθείτε σε όλες τις μονάδες που περιέχονται στο έργο VBA για να δείτε τις μακροεντολές.
// Φορτώνει την παρουσίαση που περιέχει τη μακροεντολή
let pres = new aspose.slides.Presentation("VBA.pptm");
try {
// Ελέγχει αν η παρουσίαση περιέχει έργο 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();
}
}
Έλεγχος αν ένα έργο VBA είναι προστατευμένο με κωδικό
Χρησιμοποιώντας τη μέθοδο VbaProject.isPasswordProtected, μπορείτε να προσδιορίσετε εάν οι ιδιότητες ενός έργου είναι προστατευμένες με κωδικό.
- Δημιουργήστε μια παρουσία της κλάσης Presentation και φορτώστε μια παρουσίαση που περιέχει μακροεντολή.
- Ελέγξτε αν η παρουσίαση περιέχει ένα VBA project.
- Ελέγξτε αν το έργο VBA είναι προστατευμένο με κωδικό για να δείτε τις ιδιότητές του.
let presentation = new aspose.slides.Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // Ελέγχει αν η παρουσίαση περιέχει έργο 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();
}
Συχνές ερωτήσεις
Τι συμβαίνει με τις μακροεντολές αν αποθηκεύσω την παρουσίαση ως PPTX;
Οι μακροεντολές θα αφαιρεθούν επειδή το PPTX δεν υποστηρίζει VBA. Για να διατηρήσετε τις μακροεντολές, επιλέξτε PPTM, PPSM ή POTM.
Μπορεί το Aspose.Slides να εκτελεί μακροεντολές μέσα σε μια παρουσίαση, για παράδειγμα, να ανανεώνει δεδομένα;
Όχι. Η βιβλιοθήκη ποτέ δεν εκτελεί κώδικα VBA· η εκτέλεση είναι δυνατή μόνο μέσα στο PowerPoint με τις κατάλληλες ρυθμίσεις ασφαλείας.
Υποστηρίζεται η εργασία με ελέγχους ActiveX που συνδέονται με κώδικα VBA;
Ναι, μπορείτε να αποκτήσετε πρόσβαση σε υπάρχοντες ActiveX controls, να τροποποιήσετε τις ιδιότητές τους και να τους αφαιρέσετε. Αυτό είναι χρήσιμο όταν οι μακροεντολές αλληλεπιδρούν με το ActiveX.