Διαχείριση έργων VBA σε παρουσιάσεις στο Android

Εισαγωγή

Aspose.Slides παρέχει κλάσεις και διεπαφές για εργασία με μακροεντολές και κώδικα VBA.

Προσθήκη VBA Μακροεντολών

Το Aspose.Slides παρέχει την κλάση VbaProject για να μπορείτε να δημιουργήσετε έργα VBA (και αναφορές έργου) και να επεξεργαστείτε υπάρχοντα modules. Μπορείτε να χρησιμοποιήσετε το interface IVbaProject για να διαχειριστείτε VBA ενσωματωμένα σε μια παρουσίαση.

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation.
  2. Χρησιμοποιήστε τον κατασκευαστή VbaProject για να προσθέσετε ένα νέο έργο VBA.
  3. Προσθέστε ένα module στο VbaProject.
  4. Ορίστε τον πηγαίο κώδικα του module.
  5. Προσθέστε αναφορές στο .
  6. Προσθέστε αναφορές στο Microsoft Office.
  7. Συνδέστε τις αναφορές με το έργο VBA.
  8. Αποθηκεύστε την παρουσίαση.
// Δημιουργεί ένα στιγμιότυπο της κλάσης παρουσίασης
Presentation pres = new Presentation();
try {
    // Δημιουργεί ένα νέο έργο VBA
    pres.setVbaProject(new VbaProject());
    
    // Προσθέτει ένα κενό module στο έργο VBA
    IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
    
    // Ορίζει τον κώδικα πηγής του module
    module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
    
    // Δημιουργεί μια αναφορά στο <stdole>
    VbaReferenceOleTypeLib stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
    
    // Δημιουργεί μια αναφορά στο Office
    VbaReferenceOleTypeLib officeReference = new 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", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

Αφαίρεση VBA Μακροεντολών

Χρησιμοποιώντας την ιδιότητα VbaProject στην κλάση Presentation, μπορείτε να αφαιρέσετε μια μακροεντολή VBA.

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation και φορτώστε την παρουσίαση που περιέχει τη μακροεντολή.
  2. Προσπελάστε το module Macro και αφαιρέστε το.
  3. Αποθηκεύστε την τροποποιημένη παρουσίαση.
// Φορτώνει την παρουσίαση που περιέχει τη μακροεντολή
Presentation pres = new Presentation("VBA.pptm");
try {
    // Προσπελάζει το module Vba και το αφαιρεί 
    pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
    
    // Αποθηκεύει την παρουσίαση
    pres.save("test.pptm", SaveFormat.Pptm);
} finally {
    if (pres != null) pres.dispose();
}

Εξαγωγή VBA Μακροεντολών

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation και φορτώστε την παρουσίαση που περιέχει τη μακροεντολή.
  2. Ελέγξτε αν η παρουσίαση περιέχει Έργο VBA.
  3. Επανάλαβε όλα τα modules που περιέχονται στο Έργο VBA για να προβάλεις τις μακροεντολές.
// Φορτώνει την παρουσίαση που περιέχει τη μακροεντολή
Presentation pres = new Presentation("VBA.pptm");
try {
    if (pres.getVbaProject() != null) // Ελέγχει αν η Παρουσίαση περιέχει Έργο VBA
    {
        for (IVbaModule module : pres.getVbaProject().getModules())
        {
            System.out.println(module.getName());
            System.out.println(module.getSourceCode());
        }
    }
} finally {
    if (pres != null) pres.dispose();
}

Έλεγχος αν Έργο VBA είναι Προστατευμένο με Κωδικό

Χρησιμοποιώντας τη μέθοδο IVbaProject.isPasswordProtected, μπορείτε να καθορίσετε αν οι ιδιότητες ενός έργου είναι προστατευμένες με κωδικό.

  1. Δημιουργήστε ένα στιγμιότυπο της κλάσης Presentation και φορτώστε μια παρουσίαση που περιέχει μακροεντολή.
  2. Ελέγξτε αν η παρουσίαση περιέχει VBA project.
  3. Ελέγξτε αν το έργο VBA είναι προστατευμένο με κωδικό για να προβάλετε τις ιδιότητές του.
Presentation presentation = new Presentation("VBA.pptm");
try {
    if (presentation.getVbaProject() != null) { // Ελέγχει αν η παρουσίαση περιέχει έργο VBA.
        if (presentation.getVbaProject().isPasswordProtected()) {
            System.out.printf("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.