Gérer les projets VBA dans les présentations avec Python
Vue d’ensemble
Cet article examine les fonctionnalités clés d’Aspose.Slides for Python via .NET pour travailler avec les macros dans les présentations PowerPoint. La bibliothèque fournit des outils pratiques pour ajouter, supprimer et extraire des macros, ce qui vous permet d’automatiser la création et la modification des présentations.
- Accélérer le développement des présentations — l’automatisation des tâches routinières réduit le temps nécessaire à la préparation du matériel.
- Garantir la flexibilité — la capacité de gérer les macros vous permet d’adapter les présentations à des tâches et scénarios spécifiques.
- Intégrer les données — une intégration simple avec des sources de données externes aide à maintenir le contenu des diapositives à jour.
- Simplifier la maintenance — la gestion centralisée des macros facilite l’application des changements et la mise à jour des présentations.
L’article poursuit en présentant des exemples pratiques sur la façon d’utiliser Aspose.Slides pour travailler efficacement avec les macros dans PowerPoint.
L’espace de noms aspose.slides.vba fournit des classes pour travailler avec les macros et le code VBA.
Note
Lorsque vous convertissez une présentation contenant des macros vers un autre format (PDF, HTML, etc.), Aspose.Slides ignore les macros — elles ne sont pas transférées dans le fichier de sortie.
Lorsque vous ajoutez des macros à une présentation ou réenregistrez une présentation contenant des macros, Aspose.Slides écrit les octets de macro tels quels.
Aspose.Slides ne exécute jamais les macros dans une présentation.
Ajouter des macros VBA
Aspose.Slides fournit la classe VbaProject pour créer des projets VBA (et des références de projet) et pour modifier des modules existants.
- Créez une instance de la classe Presentation.
- Utilisez le constructeur VbaProject pour ajouter un nouveau projet VBA.
- Ajoutez un module au projet VBA.
- Définissez le code source du module.
- Ajoutez une référence à
<stdole>. - Ajoutez une référence à Microsoft Office.
- Associez les références au projet VBA.
- Enregistrez la présentation.
Le code Python suivant montre comment ajouter une macro VBA à partir de zéro à une présentation :
import aspose.slides as slides
# Créez une instance de la classe Presentation.
with slides.Presentation() as presentation:
# Créez un nouveau projet VBA.
presentation.vba_project = slides.vba.VbaProject()
# Ajoutez un module vide au projet VBA.
module = presentation.vba_project.modules.add_empty_module("Module")
# Définissez le code source du module.
module.source_code = """
Sub Test(oShape As Shape)
MsgBox "Hello, world!"
End Sub
"""
# Créez une référence à <stdole>.
stdole_reference = slides.vba.VbaReferenceOleTypeLib("stdole",
"*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation")
# Créez une référence à Microsoft Office.
office_reference = slides.vba.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")
# Ajoutez les références au projet VBA.
presentation.vba_project.references.add(stdole_reference)
presentation.vba_project.references.add(office_reference)
# Enregistrez la présentation.
presentation.save("macros.pptm", slides.export.SaveFormat.PPTM)
Supprimer des macros VBA
En utilisant la propriété vba_project de la classe Presentation, vous pouvez supprimer une macro VBA.
- Créez une instance de la classe Presentation et chargez la présentation contenant la macro.
- Accédez au module de macro et supprimez-le.
- Enregistrez la présentation modifiée.
Le code Python suivant montre comment supprimer une macro VBA :
import aspose.slides as slides
# Chargez la présentation qui contient la macro.
with slides.Presentation("VBA.pptm") as presentation:
# Accédez au module VBA.
vba_module = presentation.vba_project.modules[0]
# Supprimez le module VBA.
presentation.vba_project.modules.remove(vba_module)
# Enregistrez la présentation.
presentation.save("removed_macro.pptm", slides.export.SaveFormat.PPTM)
Extraire des macros VBA
En utilisant la propriété modules de la classe VbaProject, vous pouvez accéder à tous les modules d’un projet VBA. La classe VbaModule peut être utilisée pour extraire les propriétés d’un module, telles que le nom et le code.
- Créez une instance de la classe Presentation et chargez la présentation contenant la macro.
- Vérifiez si la présentation contient un projet VBA.
- Parcourez tous les modules du projet VBA pour visualiser les macros.
Le code Python suivant montre comment extraire des macros VBA d’une présentation :
import aspose.slides as slides
with slides.Presentation("VBA.pptm") as presentation:
# Vérifiez si la présentation contient un projet VBA.
if presentation.vba_project is not None:
for module in presentation.vba_project.modules:
print(module.name)
print(module.source_code)
Vérifier si un projet VBA est protégé par un mot de passe
En utilisant la propriété VbaProject.is_password_protected, vous pouvez déterminer si les propriétés d’un projet sont protégées par un mot de passe.
- Créez une instance de la classe Presentation et chargez une présentation contenant une macro.
- Vérifiez si la présentation contient un projet VBA.
- Vérifiez si le projet VBA est protégé par un mot de passe pour visualiser ses propriétés.
import aspose.slides as slides
with slides.Presentation("VBA.pptm") as presentation:
# Vérifiez si la présentation contient un projet VBA.
if presentation.vba_project is not None:
if presentation.vba_project.is_password_protected:
print(f"The VBA Project '{presentation.vba_project.name}' is protected by password to view project properties.")
FAQ
Que se passe-t-il avec les macros si j’enregistre la présentation au format PPTX ?
Les macros seront supprimées car le format PPTX ne prend pas en charge VBA. Pour conserver les macros, choisissez PPTM, PPSM ou POTM.
Aspose.Slides peut‑il exécuter des macros à l’intérieur d’une présentation pour, par exemple, actualiser des données ?
Non. La bibliothèque n’exécute jamais de code VBA ; l’exécution n’est possible qu’à l’intérieur de PowerPoint avec les paramètres de sécurité appropriés.
Le travail avec des contrôles ActiveX liés au code VBA est‑il pris en charge ?
Oui, vous pouvez accéder aux contrôles ActiveX existants, modifier leurs propriétés et les supprimer. Cela est utile lorsque les macros interagissent avec ActiveX.