PowerPoint VBA教程:使用形状(绘图对象)

形状或绘图对象由三种不同的对象表示:Shapes集合、ShapeRange集合和Shape对象。通常,Shapes集合用于创建形状并对幻灯片中的所有形状进行重复操作;Shape对象用于修改单个形状;而 ShapeRange集合用于修改多个形状,就象在用户界面中使用多个选定的形状一样。

设置形状的属性

形状的许多格式属性不是由直接应用于 Shape 或 ShapeRange对象的属性设置的。相反,相关的形状属性在第二级对象内进行组合。例如FillFormat对象,其中包含了与形状填充相关的所有属性;又如LinkFormat对象,其中包含了链接的 OLE对象的所有特有属性。若要设置一个形状的属性,必须先返回代表相关形状属性的对象,然后设置该返回的对象的属性。例如,使用Fill属性返回 FillFormat对象,然后设置 FillFormat对象的ForeColor属性,从而设置指定形状的前景填充色,如以下示例所示。


Set myDocument = ActivePresentation.Slides(1)
myDocument.Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

同时对多个形状应用属性或方法

在用户界面中,有些操作可以对选定的多个形状执行;例如,可以选定多个形状并同时设置它们各自的填充。其他些操作则只能对选定的单个形状执行;例如,只有选定单个形状时才能编辑其中的文本。

在 Visual Basic 中,对一组形状应用属性和方法有两种方式。这两种方式使您可以对若干形状执行在单个形状上能执行的所有操作,而不管是否可以在用户界面上执行这些操作。

许多应用于 Shape对象和 ShapeRange集合的属性和方法在用于特定形状时会失败。例如,如果将TextFrame属性应用于不能包含文本的形状,将会失败。如果不能确定特定的属性或方法对 ShapeRange集合中的每个形状都能应用,则不要对 ShapeRange集合应用于该属性或方法。如果确实要对形状集合应用一个这样的属性或方法,则必须在应用之前逐个测试集合中的每个形状,以确保形状的类型与所应用的属性和方法相匹配。

对 ShapeRange集合应用属性和方法

如果可以同时在用户界面上对多个选定的形状执行某种操作,则可以通过编程的方式创建一个 ShapeRange集合,再应用适当的属性和方法以执行该操作。以下示例在myDocument 中创建一个包含自选图形“Big Star”和“Little Star”的形状区域,并对它们应用过渡填充。


Set myDocument = ActivePresentation.Slides(1)
Set myRange = myDocument.Shapes _
    .Range(Array("Big Star", "Little Star"))
myRange.Fill.PresetGradient msoGradientHorizontal, _
    1, msoGradientBrass

下面是将属性和方法应用于 ShapeRange集合的一般原则。

设置组合在 ShapeRange集合第二级对象中的形状的属性时,上述原则同样适用。例如 FillFormat对象。如果第二级对象代表可在用户界面中对多个选定对象执行的操作,则可以从 ShapeRange集合返回该对象并设置其属性。例如,可以使用 Fill属性返回 FillFormat对象,该对象代表 ShapeRange集合中所有形状的填充。设置该 FillFormat对象的属性将设置 ShapeRange集合中所有形状的相同属性。

循环 Shapes 或 ShapeRange集合

选择多个形状并执行某个命令,即使无法在用户界面中同时对多个形状执行一个操作,但可以用编程方式执行相同的操作。方法是:在包含要使用的形状的 Shapes集合或 ShapeRange集合中执行循环,然后对集合中的单个 Shape对象应用适当的属性和方法。以下示例逐个检查myDocument 中的所有形状,并在每个自选图形中添加文本。


Set myDocument = ActivePresentation.Slides(1)
For Each sh In myDocument.Shapes
    If sh.Type = msoAutoShape Then
            sh.TextFrame.TextRange.InsertAfter " (version 1)"
    End If
Next

以下示例创建包含当前窗口中所有选定形状的 ShapeRange集合,并为集合中每个能够包含文本的形状设置文本。


For Each sh in ActiveWindow.Selection.ShapeRange
    If sh.HasTextFrame Then
        sh.TextFrame.TextRange = "Initially selected"
    End If
Next

在形状区域中对齐、布置、分组形状

使用AlignDistribute方法定位一组形状的相互位置或相对于包含它们的文档的位置。使用Group方法或Regroup方法从多个形状中创建单个形状组。

上页:PowerPoint VBA教程:在文档中使用 ActiveX 控件 下页:PowerPoint VBA教程:使用窗格和视图

PowerPoint VBA教程:使用形状(绘图对象)

PowerPoint VBA教程:使用窗格和视图 PowerPoint VBA教程:使用表格
PowerPoint VBA教程:与语言相关的属性和方法 PowerPoint VBA教程:新的事件
PowerPoint VBA教程:新的方法(按字母顺序) PowerPoint VBA教程:新的方法(按对象排序)
PowerPoint VBA教程:新的对象 PowerPoint VBA教程:新的属性(按字母顺序)
PowerPoint VBA教程:新的属性(按对象排序) PowerPoint VBA教程:OLE 程序标识符
PowerPoint VBA教程:为 Microsoft PowerPoint 2002 开发人员新增的内容 PowerPoint VBA教程:Activate方法
PowerPoint VBA教程:Add方法 PowerPoint VBA教程:AddBaseline方法
PowerPoint VBA教程:AddCallout方法 PowerPoint VBA教程:AddComment方法
PowerPoint VBA教程:AddConnector方法 PowerPoint VBA教程:AddCurve方法
PowerPoint VBA教程:AddDiagram方法 PowerPoint VBA教程:AddEffect方法
版权所有 © 中山市飞娥软件工作室 证书:粤ICP备09170368号