Správa projektů VBA v prezentacích pomocí Pythonu
Úvod
Aspose.Slides poskytuje třídy a rozhraní pro práci s makry a kódem VBA.
Varování
When you convert a presentation containing macros to a different file format (PDF, HTML, etc.), Aspose.Slides ignores all macros (macros are not carried into the resulting file).
When you add macros to a presentation or resave a presentation containing macros, Aspose.Slides simply writes the bytes for the macros.
Aspose.Slides never runs the macros in a presentation.
Přidání VBA makrů
Aspose.Slides poskytuje třídu VbaProject, která vám umožní vytvářet projekty VBA (a odkazy na projekty) a upravovat existující moduly. Třídu VbaProject můžete použít ke správě VBA vloženého do prezentace.
- Vytvořte instanci třídy Presentation.
- Použijte konstruktor VbaProject k přidání nového projektu VBA.
- Přidejte modul do projektu VBA.
- Nastavte zdrojový kód modulu.
- Přidejte odkazy na
stdole. - Přidejte odkazy na Microsoft Office.
- Přiřaďte odkazy k projektu VBA.
- Uložte prezentaci.
Tento Python kód ukazuje, jak přidat VBA makro od začátku do prezentace:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, VbaProject, VbaReferenceOleTypeLib
presentation = Presentation()
try:
# Vytvořte nový projekt VBA.
vba_project = VbaProject()
presentation.setVbaProject(vba_project)
# Přidejte prázdný modul a nastavte jeho zdrojový kód.
module = vba_project.getModules().addEmptyModule("Module")
module.setSourceCode('Sub Test(oShape As Shape)\n MsgBox "Test"\nEnd Sub')
# Vytvořte odkazy na stdole a Microsoft Office.
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")
# Přidejte odkazy do VBA projektu.
vba_project.getReferences().add(stdole_reference)
vba_project.getReferences().add(office_reference)
# Uložte prezentaci.
presentation.save("test.pptm", SaveFormat.Pptm)
finally:
presentation.dispose()
Poznámka
Můžete se podívat na Aspose Macro Remover, což je zdarma webová aplikace používaná k odstraňování maker z dokumentů PowerPoint, Excel a Word.Odstranění VBA makrů
Pomocí metody getVbaProject třídy Presentation můžete odstranit VBA makro.
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
- Získejte přístup k modulu makra a odstraňte jej.
- Uložte upravenou prezentaci.
Tento Python kód ukazuje, jak odstranit VBA makro:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
# Načtěte prezentaci obsahující makro.
presentation = Presentation("VBA.pptm")
try:
# Získejte přístup k VBA modulu a odstraňte jej.
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)
# Uložte prezentaci.
presentation.save("test.pptm", SaveFormat.Pptm)
finally:
presentation.dispose()
Extrahování VBA makrů
- Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující makro.
- Zkontrolujte, zda prezentace obsahuje VBA projekt.
- Procházejte všechny moduly obsažené v projektu VBA a zobrazte makra.
Tento Python kód ukazuje, jak extrahovat VBA makra z prezentace obsahující makra:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
# Načtěte prezentaci obsahující makro.
presentation = Presentation("VBA.pptm")
try:
# Zkontrolujte, zda prezentace obsahuje projekt VBA.
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()
Zkontrolujte, zda je VBA projekt chráněn heslem
Pomocí metody VbaProject.isPasswordProtected můžete zjistit, zda jsou vlastnosti projektu chráněny heslem.
- Vytvořte instanci třídy Presentation a načtěte prezentaci, která obsahuje makro.
- Zkontrolujte, zda prezentace obsahuje VBA projekt.
- Zkontrolujte, zda je projekt VBA chráněn heslem, a prohlédněte si jeho vlastnosti.
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation("VBA.pptm")
try:
# Zkontrolujte, zda prezentace obsahuje projekt VBA.
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()
Často kladené otázky
Co se stane s makry, když uložíte prezentaci jako PPTX?
Makra budou odstraněna, protože formát PPTX nepodporuje VBA. Pokud chcete makra zachovat, zvolte PPTM, PPSM nebo POTM.
Může Aspose.Slides spouštět makra v prezentaci, například pro obnovení dat?
Ne. Knihovna nikdy neprovádí kód VBA; spuštění je možné pouze v PowerPointu s odpovídajícím nastavením zabezpečení.
Je podporována práce s ovládacími prvky ActiveX spojenými s kódem VBA?
Ano, můžete přistupovat k existujícím ActiveX controls, upravovat jejich vlastnosti a odstraňovat je. To je užitečné, když makra interagují s ActiveX.