VBA projektek kezelése bemutatókban PHP használatával
Bevezetés
Az Aspose.Slides API osztályokat tartalmaz a makrókkal és VBA kóddal való munkához.
Megjegyzés
Ha egy makrókat tartalmazó bemutatót más fájlformátumba (PDF, HTML stb.) konvertálsz, az Aspose.Slides figyelmen kívül hagyja az összes makrót (a makrók nem kerülnek át a létrejövő fájlba).
Ha makrókat adsz hozzá egy bemutatóhoz, vagy újra mented a makrókat tartalmazó bemutatót, az Aspose.Slides egyszerűen csak a makrók bájtait írja.
Az Aspose.Slides soha nem futtatja a bemutató makróit.
VBA makrók hozzáadása
Az Aspose.Slides biztosítja a VbaProject osztályt, amely lehetővé teszi VBA projektek (és projekthelyes hivatkozások) létrehozását, valamint a meglévő modulok szerkesztését. A VbaProject osztály segítségével kezelheted a bemutatóba beágyazott VBA-t.
- Hozz létre egy példányt a Presentation osztályból.
- Használd a VbaProject konstruktorát új VBA projekt hozzáadásához.
- Adj hozzá egy modult a VbaProject-hez.
- Állítsd be a modul forráskódját.
- Adj hozzá hivatkozásokat a
-hez. - Adj hozzá hivatkozásokat a Microsoft Office-hoz.
- Kapcsold össze a hivatkozásokat a VBA projekttel.
- Mentse a bemutatót.
Ez a PHP kód bemutatja, hogyan adhatunk hozzá egy VBA makrót a semmiből egy bemutatóhoz:
# Létrehoz egy példányt a bemutató osztályból
$pres = new Presentation();
try {
# Létrehoz egy új VBA projektet
$pres->setVbaProject(new VbaProject());
# Üres modult ad a VBA projekthez
$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>-re
$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
$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);
# Elmenti a bemutatót
$pres->save("test.pptm", SaveFormat::Pptm);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
VBA makrók eltávolítása
A Presentation osztály alatt található VbaProject tulajdonság használatával eltávolíthatod a VBA makrót.
- Hozz létre egy példányt a Presentation osztályból, és töltsd be a makrót tartalmazó bemutatót.
- Érd el a Macro modult, és távolítsd el.
- Mentse a módosított bemutatót.
Ez a PHP kód bemutatja, hogyan távolíthatod el egy VBA makrót:
# Betölti a makrót tartalmazó bemutatót
$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));
# Elmenti a bemutatót
$pres->save("test.pptm", SaveFormat::Pptm);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
VBA makrók kinyerése
- Hozz létre egy példányt a Presentation osztályból, és töltsd be a makrót tartalmazó bemutatót.
- Ellenőrizd, hogy a bemutató tartalmaz-e VBA projektet.
- Iterálj végig a VBA projektben található összes modulon a makrók megtekintéséhez.
Ez a PHP kód bemutatja, hogyan nyerheted ki a VBA makrókat egy makrókat tartalmazó bemutatóból:
# Betölti a makrót tartalmazó bemutatót
$pres = new Presentation("VBA.pptm");
try {
# Ellenőrzi, hogy a bemutató tartalmaz-e VBA projektet
if (!java_is_null($pres->getVbaProject())) {
foreach($pres->getVbaProject()->getModules() as $module) {
echo($module->getName());
echo($module->getSourceCode());
}
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Ellenőrizze, hogy egy VBA projekt jelszóval védett-e
A VbaProject::isPasswordProtected metódus használatával meghatározhatod, hogy a projekt tulajdonságai jelszóval védettek-e.
- Hozz létre egy példányt a Presentation osztályból, és tölts be egy makrót tartalmazó bemutatót.
- Ellenőrizd, hogy a bemutató tartalmazza-e a VBA projektet.
- Ellenőrizd, hogy a VBA projekt jelszóval védett-e, hogy megtekinthesd a tulajdonságait.
$presentation = new Presentation("VBA.pptm");
try {
if ($presentation->getVbaProject() != null) { // Ellenőrizze, hogy a bemutató tartalmaz-e VBA projektet.
if ($presentation->getVbaProject()->isPasswordProtected()) {
printf("The VBA Project '%s' is protected by password to view project properties.",
$presentation->getVbaProject()->getName());
}
}
} finally {
$presentation->dispose();
}
FAQ
Mi történik a makrókkal, ha a bemutatót PPTX formátumban mentem?
A makrók eltávolításra kerülnek, mert a PPTX nem támogatja a VBA-t. A makrók megtartásához válaszd a PPTM, PPSM vagy POTM formátumot.
Futtathatja az Aspose.Slides a makrókat egy bemutatóban, például adatfrissítésre?
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-e az ActiveX vezérlők VBA kóddal való összekapcsolása?
Igen, elérheted a meglévő ActiveX vezérlőket, módosíthatod a tulajdonságaikat, és eltávolíthatod őket. Ez hasznos, ha a makrók az ActiveX-szel kommunikálnak.