通过VBA进行演示

Aspose.Slides.Vba命名空间包含用于处理宏和VBA代码的类和接口。

添加VBA宏

Aspose.Slides提供了VbaProject类,允许您创建VBA项目(和项目引用)并编辑现有模块。您可以使用IVbaProject接口来管理嵌入演示文稿中的VBA。

  1. 创建Presentation类的实例。
  2. 使用VbaProject构造函数添加新的VBA项目。
  3. 向VbaProject添加一个模块。
  4. 设置模块源代码。
  5. 添加对的引用。
  6. 添加对Microsoft Office的引用。
  7. 将引用与VBA项目关联。
  8. 保存演示文稿。

以下Python代码演示如何从零开始向演示文稿添加VBA宏:

import aspose.slides as slides

# 创建演示文稿类的实例
with slides.Presentation() as presentation:
    # 创建一个新的VBA项目
    presentation.vba_project = slides.vba.VbaProject()

    # 向VBA项目添加一个空模块
    module = presentation.vba_project.modules.add_empty_module("Module")
  
    # 设置模块源代码
    module.source_code = "Sub Test(oShape As Shape) MsgBox ""Test"" End Sub"

    # 创建对<stdole>的引用
    stdoleReference = slides.vba.VbaReferenceOleTypeLib("stdole", "*\\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\\Windows\\system32\\stdole2.tlb#OLE Automation")

    # 创建对Office的引用
    officeReference =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")

    # 向VBA项目添加引用
    presentation.vba_project.references.add(stdoleReference)
    presentation.vba_project.references.add(officeReference)

            
    # 保存演示文稿
    presentation.save("AddVBAMacros_out.pptm", slides.export.SaveFormat.PPTM)

删除VBA宏

使用Presentation类下的VbaProject属性,您可以删除VBA宏。

  1. 创建Presentation类的实例并加载包含宏的演示文稿。
  2. 访问宏模块并将其删除。
  3. 保存修改后的演示文稿。

以下Python代码演示如何删除VBA宏:

import aspose.slides as slides

# 加载包含宏的演示文稿
with slides.Presentation(path + "VBA.pptm") as presentation:
    # 访问Vba模块并将其删除  
    presentation.vba_project.modules.remove(presentation.vba_project.modules[0])

    # 保存演示文稿
    presentation.save("RemovedVBAMacros_out.pptm", slides.export.SaveFormat.PPTM)

提取VBA宏

  1. 创建Presentation类的实例并加载包含宏的演示文稿。
  2. 检查演示文稿是否包含VBA项目。
  3. 循环遍历VBA项目中包含的所有模块以查看宏。

以下Python代码演示如何从包含宏的演示文稿中提取VBA宏:

import aspose.slides as slides

with slides.Presentation(path + "VBA.pptm") as pres:
    if pres.vba_project is not None: # 检查演示文稿是否包含VBA项目
        for module in pres.vba_project.modules:
            print(module.name)
            print(module.source_code)