跳到主要内容

在 Excel 中使用 VBA 操作 PowerPoint

如果你要在 Excel 中使用 VBA 操作 PowerPoint,第一步,你必须引用 PowerPoint 对象库,可以使用前期绑定或者后期绑定

引用 PowerPoint 对象库

前期绑定

打开 VBE(快捷键 ALT+F11),在 VBE 中单击【工具】,选择【引用】,在【引用 VBAProject】对话框中选择 【Microsoft PowerPoint 16 Object Library】(根据你的 Office 版本选择,本操作适用于 MS Office 2019)。

' 早期绑定
Dim pptApp As Application
Set pptApp = New PowerPoint.Application

后期绑定

将应用程序变量声明为对象,VBA 引擎在运行时连接到正确的应用程序。

' 后期绑定
Dim pptApp As Object
Set pptApp = CreateObject("PowerPoint.Application")

使应用可见

在设置 PowerPoint 应用程序的引用后,你可能需要使其可见。

pptApp.Visible = True

激活应用

在设置 PowerPoint 应用程序的引用后,你可能还需要激活 PowerPoint。

pptApp.Visible = Activate

操作 PowerPoint

如果你要在 Excel 中操作演示文稿,只需添加对你上面创建的 PowerPoint 的引用。详细课程请参考学习:PowerPoint VBA 编程

举例来说,在 PowerPoint 中的代码:

Presentations.Open ("My Presentation.pptx")

如果需要在 Excel 中操作,需要这样使用:

pptApp.Presentations.Open ("My Presentation.pptx")

关闭应用程序

一旦操作完成,你需要关闭 PowerPoint 实例,并释放内存。

pptApp.Quit
Set pptApp = Nothing

示例一:使用前期绑定从 Excel 复制到 PowerPoint

本示例使用前期绑定,将 Excel 活动工作表中的数据复制到新建的演示文稿中,并保存在桌面上。本示例只为说明操作过程。

Sub CreatePPTSlides()
    '前期绑定:工具 > 引用 > Microsoft PowerPoint 16 Object Library
    
    '定义变量
    Dim pptApp As PowerPoint.Application
    Dim ppt As PowerPoint.Presentation
    Dim newSlide As PowerPoint.Slide
    
    '新建一个PowerPoint实例
    Set pptApp = New PowerPoint.Application
    
    '设置PowerPoint可见
    pptApp.Visible = True
    '激活PowerPoint
    pptApp.Activate
    
    '新增演示文稿
    Set ppt = pptApp.Presentations.Add
    '新增一张标题幻灯片
    Set newSlide = ppt.Slides.Add(1, ppLayoutTitle) 'ppLayoutTitle = 1
    '设置标题
    newSlide.Shapes(1).TextFrame.TextRange = "在Excel中使用VBA操作PPT"
    '设置副标题
    newSlide.Shapes(2).TextFrame.TextRange = "果果云课堂"
    '新增一张空白幻灯片
    Set newSlide = ppt.Slides.Add(2, ppLayoutBlank) 'ppLayoutBlank = 12
    '选择新增的空白幻灯片
    newSlide.Select
    '复制Excel中活动工作表A1单元格所在的区域数据
    ThisWorkbook.ActiveSheet.Range("A1").CurrentRegion.Copy
    '将复制的数据粘贴为形状
    newSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile
    '将演示文稿保存在桌面上
    ppt.SaveAs Environ("UserProfile") & "\Desktop\在Excel中使用VBA操作PPT示例一" & Format(Now, "yyyy-mm-dd hh-mm-ss") & ".pptx"
    
    '关闭演示文稿
    ppt.Close
    '关闭PowerPoint应用程序
    pptApp.Quit
End Sub

示例二:使用后期绑定从 Excel 复制到 PowerPoint

本示例使用后期绑定,将 Excel 活动工作表中的数据复制到新建的演示文稿中,并保存在桌面上。本示例只为说明操作过程。注意代码的区别。

Sub CopyRangeToPPT()
    '使用后期绑定,无需引用库
    
    '定义变量
    Dim pptApp As Object
    Dim ppt As Object
    Dim newSlide  As Object
    
    '新建一个PowerPoint实例
    Set pptApp = CreateObject("PowerPoint.Application")
    
    '设置PowerPoint可见
    pptApp.Visible = True
    '激活PowerPoint
    pptApp.Activate
    
    '新增演示文稿
    Set ppt = pptApp.Presentations.Add
    '新增一张标题幻灯片
    Set newSlide = ppt.Slides.Add(1, 1) 'ppLayoutTitle = 1
    '设置标题
    newSlide.Shapes(1).TextFrame.TextRange = "在Excel中使用VBA操作PPT"
    '设置副标题
    newSlide.Shapes(2).TextFrame.TextRange = "果果云课堂"
    '新增一张空白幻灯片
    Set newSlide = ppt.Slides.Add(2, 12) 'ppLayoutBlank = 12
    '选择新增的空白幻灯片
    newSlide.Select
    '复制Excel中活动工作表A1单元格所在的区域数据
    ThisWorkbook.ActiveSheet.Range("A1").CurrentRegion.Copy
    '将复制的数据粘贴为形状
    newSlide.Shapes.PasteSpecial DataType:=2 '2 = ppPasteEnhancedMetafile
    '将演示文稿保存在桌面上
    ppt.SaveAs Environ("UserProfile") & "\Desktop\在Excel中使用VBA操作PPT示例二" & Format(Now, "yyyy-mm-dd hh-mm-ss") & ".pptx"
    
    '关闭演示文稿
    ppt.Close
    '关闭PowerPoint应用程序
    pptApp.Quit
End Sub

评论

您的电子邮件地址不会显示出来。*号为必填项。