VBA projektek kezelése prezentációkban Java-val
Bevezetés
Az Aspose.Slides osztályokat és interfészeket biztosít a makrókkal és a VBA kóddal való munkához.
Note
Amikor egy makrókat tartalmazó prezentációt átalakít egy másik fájlformátumba (PDF, HTML stb.), az Aspose.Slides figyelmen kívül hagyja az összes makrót (a makrók nem kerülnek át a létrehozott fájlba).
Amikor makrókat ad hozzá egy prezentációhoz vagy újra ment egy makrókat tartalmazó prezentációt, az Aspose.Slides egyszerűen csak a makrók bájtjait írja.
Az Aspose.Slides soha nem futtatja a prezentáció makróit.
VBA makrók hozzáadása
Az Aspose.Slides biztosítja a VbaProject osztályt, amely lehetővé teszi VBA projektek (és projekt hivatkozások) létrehozását, valamint létező modulok szerkesztését. A IVbaProject interfészt használhatja a prezentációba beágyazott VBA kezeléséhez.
- Hozzon létre egy példányt a Presentation osztályból.
- Használja a VbaProject konstruktort egy új VBA projekt hozzáadásához.
- Adjon hozzá egy modult a VbaProject-hez.
- Állítsa be a modul forráskódját.
- Adjon hozzá hivatkozásokat a
-hoz. - Adjon hozzá hivatkozásokat a Microsoft Office-hoz.
- Rendelje hozzá a hivatkozásokat a VBA projekthez.
- Mentse a prezentációt.
Ez a Java kód bemutatja, hogyan lehet egy VBA makrót a semmiből hozzáadni egy prezentációhoz:
// Létrehoz egy példányt a prezentáció osztályból
Presentation pres = new Presentation();
try {
// Létrehoz egy új VBA projektet
pres.setVbaProject(new VbaProject());
// Üres modult ad hozzá a VBA projekthez
IVbaModule module = pres.getVbaProject().getModules().addEmptyModule("Module");
// Beállítja a modul forráskódját
module.setSourceCode("Sub Test(oShape As Shape)MsgBox Test End Sub");
// Létrehoz egy hivatkozást a <stdole>-ra
VbaReferenceOleTypeLib stdoleReference = new VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation");
// Létrehoz egy hivatkozást az Office-ra
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");
// Hivatkozásokat ad a VBA projekthez
pres.getVbaProject().getReferences().add(stdoleReference);
pres.getVbaProject().getReferences().add(officeReference);
// Mentse a prezentációt
pres.save("test.pptm", SaveFormat.Pptm);
} finally {
if (pres != null) pres.dispose();
}
VBA makrók eltávolítása
A Presentation osztály alatti VbaProject tulajdonság használatával eltávolíthat egy VBA makrót.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a makrót tartalmazó prezentációt.
- A Makró modulhoz férjen hozzá, és távolítsa el.
- Mentse a módosított prezentációt.
Ez a Java kód bemutatja, hogyan lehet eltávolítani egy VBA makrót:
// Betölti a makrót tartalmazó prezentációt
Presentation pres = new Presentation("VBA.pptm");
try {
// Eléri a Vba modult és eltávolítja
pres.getVbaProject().getModules().remove(pres.getVbaProject().getModules().get_Item(0));
// Mentse a prezentációt
pres.save("test.pptm", SaveFormat.Pptm);
} finally {
if (pres != null) pres.dispose();
}
VBA makrók kinyerése
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a makrót tartalmazó prezentációt.
- Ellenőrizze, hogy a prezentáció tartalmaz-e VBA Project-et.
- Iteráljon végig a VBA Projectben található összes modulen a makrók megtekintéséhez.
Ez a Java kód bemutatja, hogyan lehet kinyerni a VBA makrókat egy makrókat tartalmazó prezentációból:
// Betölti a makrót tartalmazó prezentációt
Presentation pres = new Presentation("VBA.pptm");
try {
if (pres.getVbaProject() != null) // Ellenőrzi, hogy a prezentáció tartalmaz-e VBA projektet
{
for (IVbaModule module : pres.getVbaProject().getModules())
{
System.out.println(module.getName());
System.out.println(module.getSourceCode());
}
}
} finally {
if (pres != null) pres.dispose();
}
Annak ellenőrzése, hogy egy VBA Project jelszóval védett-e
A IVbaProject.isPasswordProtected metódus használatával meghatározhatja, hogy a projekt tulajdonságai jelszóval védettek-e.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be egy makrót tartalmazó prezentációt.
- Ellenőrizze, hogy a prezentáció tartalmaz-e VBA projektet.
- Ellenőrizze, hogy a VBA projekt jelszóval védett-e a tulajdonságok megtekintéséhez.
Presentation presentation = new Presentation("VBA.pptm");
try {
if (presentation.getVbaProject() != null) { // Ellenőrizze, hogy a prezentáció tartalmaz-e VBA projektet.
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();
}
GYIK
Mi történik a makrókkal, ha PPTX formátumban mentem a prezentációt?
A makrók el lesznek távolítva, mert a PPTX nem támogatja a VBA-t. A makrók megtartásához válassza a PPTM, PPSM vagy POTM formátumot.
Futtathatja az Aspose.Slides a makrókat a prezentációban, például adatok frissítésére?
Nem. A könyvtár soha nem hajtja végre a VBA kódot; a végrehajtás csak a megfelelő biztonsági beállításokkal rendelkező PowerPointban lehetséges.
Támogatott a VBA kóddal összekapcsolt ActiveX vezérlőkkel való munka?
Igen, elérheti a meglévő ActiveX vezérlőket, módosíthatja azok tulajdonságait, és eltávolíthatja őket. Ez akkor hasznos, amikor a makrók interakcióba lépnek az ActiveX-szel.