谈谈使用VBA控制PPT

2023-08-30 08:28:55 浏览数 (3)

与Excel一样,我们也可以使用VBA来操控PPT。

如下面的代码:

代码语言:javascript复制
Sub AddShapeToPPT()
 Dim myShape As Shape
 Set myShape = ActiveWindow.View.Slide.Shapes.AddShape(msoShapeRectangle, 50, 50, 50, 50)
 
 With myShape.Fill
   .Visible = msoTrue
   .ForeColor.RGB = RGB(255, 0, 0)
   .Transparency = 0
   .Solid
 End With
End Sub

在PowerPoint中运行后,将会在当前幻灯片中生成一个红色的矩形(正方形)。

然而,与Excel不同的是,在PowerPoint中没有宏录制器,因而不能将操作录制成代码。但我们可以借助于Excel的宏录制器,在Excel中录制相关操作的代码,然后稍作修改,将其移植到PowerPoint中。

例如,在Excel中使用宏录制器录制的绘制红色矩形的代码如下:

代码语言:javascript复制
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 50, 50, 50, 50).Select
 With Selection.ShapeRange.Fill
   .Visible = msoTrue
   .ForeColor.RGB = RGB(255, 0, 0)
   .Transparency = 0
   .Solid
 End With

与在PowerPoint中创建红色矩形的代码相对,几乎相同。只是,在Excel中使用ActiveSheet代表引用了当前工作表,而在PowerPoint中使用ActiveWindow.View.Slide代表引用当前幻灯片。

这为我们提供了一种方法,也就是在Excel中录制相关的操作代码,稍作修改后应用到PowerPoint中。

其实,我们可以直接在Excel的VBE中修改代码,用来生成PPT。与上文在PPT中绘制红色矩形一样,下面的示例代码从Excel中打开PPT并在当前幻灯片中绘制一个红 色矩形:

代码语言:javascript复制
Sub AddShapeToPPT()
 Dim pptApp As PowerPoint.Application
 Set pptApp = New PowerPoint.Application
 Dim pptPres As Object
 Set pptPres = pptApp.Presentations.Add(msoTrue)
 Dim pptSlide As Object
 Set pptSlide = pptPres.Slides.Add(1, ppLayoutTitleOnly)
 
 Dim myShape As Object
 Set myShape = pptApp.ActiveWindow.View.Slide.Shapes. _
 AddShape(msoShapeRectangle, 50, 50, 50, 50)
 With myShape.Fill
   .Visible = msoTrue
   .ForeColor.RGB = RGB(255, 0, 0)
   .Transparency = 0
   .Solid
 End With
End Sub

可以看出,代码段除了声明部分要引用幻灯片用来处理外,下面的大部分代码都相同。注意,在运行上面的代码前,要先引用相应的对象库,即在VBE中,单击菜单“工具——引用”,在“引用”对话框中,找到“Microsoft PowerPoint 16.0 Object Library”并选取其前面的复选框,如下图1所示。

图1

0 人点赞