与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