VBA projektek kezelése prezentációkban Python használatával
Bevezetés
Az Aspose.Slides osztályokat és interfészeket biztosít a makrókkal és VBA kóddal való munkához.
Warning
Ha egy makrókat tartalmazó bemutatót átalakít más 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).
Ha makrókat ad hozzá egy bemutatóhoz vagy újra ment egy makrókat tartalmazó bemutatót, az Aspose.Slides egyszerűen csak a makrók bájjtárait írja.
Az Aspose.Slides soha nem futtatja a bemutatóban lévő makrókat.
VBA makrók hozzáadása
Az Aspose.Slides a VbaProject osztályt biztosítja, amely lehetővé teszi VBA projektek (és projekt hivatkozások) létrehozását és meglévő modulok szerkesztését. A VbaProject osztály segítségével kezelheti a bemutatóba beágyazott VBA-t.
- Hozzon létre egy példányt a Presentation osztályból.
- Használja a VbaProject konstruktorát egy új VBA projekt hozzáadásához.
- Adjon hozzá egy modult a VBA projekthez.
- Állítsa be a modul forráskódját.
- Adjon hozzá hivatkozásokat a
stdole-hez. - Adjon hozzá hivatkozásokat a Microsoft Office-hoz.
- Kapcsolja össze a hivatkozásokat a VBA projekttel.
- Mentse el a bemutatót.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, VbaProject, VbaReferenceOleTypeLib
presentation = Presentation()
try:
# Új VBA projekt létrehozása.
vba_project = VbaProject()
presentation.setVbaProject(vba_project)
# Üres modul hozzáadása és a forráskód beállítása.
module = vba_project.getModules().addEmptyModule("Module")
module.setSourceCode('Sub Test(oShape As Shape)\n MsgBox "Test"\nEnd Sub')
# Hivatkozások létrehozása a stdole-ra és a Microsoft Office-ra.
stdole_reference = VbaReferenceOleTypeLib("stdole", r"*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\system32\stdole2.tlb#OLE Automation")
office_reference = VbaReferenceOleTypeLib("Office", r"*\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ások hozzáadása a VBA projekthez.
vba_project.getReferences().add(stdole_reference)
vba_project.getReferences().add(office_reference)
# Prezentáció mentése.
presentation.save("test.pptm", SaveFormat.Pptm)
finally:
presentation.dispose()
Note
Érdemes megtekinteni az Aspose Macro Remover ingyenes webalkalmazást, amelyet a PowerPoint, Excel és Word dokumentumokból származó makrók eltávolítására használnak.VBA makrók eltávolítása
A Presentation osztály getVbaProject metódusának 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ó bemutatót.
- Hozzáfér a makró modulhoz, és eltávolítja azt.
- Mentse el a módosított bemutatót.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
# Töltse be a makrót tartalmazó prezentációt.
presentation = Presentation("VBA.pptm")
try:
# Hozzáfér a VBA modulhoz és eltávolítja.
vba_project = presentation.getVbaProject()
if vba_project is not None and len(list(vba_project.getModules())) > 0:
module = vba_project.getModules().get_Item(0)
vba_project.getModules().remove(module)
# Prezentáció mentése.
presentation.save("test.pptm", SaveFormat.Pptm)
finally:
presentation.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ó bemutatót.
- Ellenőrizze, hogy a bemutató tartalmaz-e VBA projektet.
- Iteráljon végig a VBA projektben lévő összes modulon a makrók megtekintéséhez.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
# Töltse be a makrót tartalmazó prezentációt.
presentation = Presentation("VBA.pptm")
try:
# Ellenőrizze, hogy a prezentáció tartalmaz-e VBA projektet.
vba_project = presentation.getVbaProject()
if vba_project is not None:
for module in vba_project.getModules():
print(module.getName())
print(module.getSourceCode())
finally:
presentation.dispose()
Ellenőrizze, hogy a VBA projekt jelszóvédett-e
A VbaProject.isPasswordProtected metódus használatával meghatározhatja, hogy egy projekt tulajdonságai jelszóvédettek-e.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a makrót tartalmazó bemutatót.
- Ellenőrizze, hogy a bemutató tartalmaz-e VBA projektet.
- Ellenőrizze, hogy a VBA projekt jelszóvédett-e a tulajdonságai megtekintéséhez.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("VBA.pptm")
try:
# Ellenőrizze, hogy a prezentáció tartalmaz-e VBA projektet.
vba_project = presentation.getVbaProject()
if vba_project is not None:
if vba_project.isPasswordProtected():
print(f"The VBA project '{vba_project.getName()}' is password-protected for viewing its properties.")
finally:
presentation.dispose()
FAQ
Mi történik a makrókkal, ha PPTX formátumban mentem a bemutatót?
A makrók eltávolításra kerülnek, mivel 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 makrókat a bemutatóban például adatok frissítéséhez?
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ő PowerPoint-ban lehetséges.
Támogatott az ActiveX vezérlőkkel való munka, amelyek VBA kódhoz vannak kapcsolva?
Igen, hozzáférhet a meglévő ActiveX controls elemekhez, módosíthatja azok tulajdonságait, és eltávolíthatja őket. Ez hasznos, amikor a makrók az ActiveX-szel kommunikálnak.