您可以按名称访问形状,如下所示:
Dim oSlide As Slide
Set oSlide = ActivePresentation.Slides(1)
Dim oShape As Shape
Set oShape = oSlide.Shapes(strShapeName)
Dim oTextRange As TextRange
Set oTextRange = oShape.TextFrame.TextRange
oTextRange.Text = "this is some text"
oTextRange.Font.Bold = msoTrue
请注意,无论您要做什么,只需记录您通过 UI 执行此操作的宏,然后复制它。没错,录制的宏会大量使用该Selection
对象,但这很容易解决 - 只需获取对适当Shape
对象(或其他对象)的引用,然后在生成的代码中替换它即可。
因此,例如,如果记录的用于更改形状填充颜色的宏是这样的:
With ActiveWindow.Selection.ShapeRange
.Fill.Visible = msoTrue
.Fill.Solid
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Fill.Transparency = 0#
End With
...并且您想将填充颜色应用于您已经引用 as 的形状oShape
,然后将代码更改为:
With oShape
.Fill.Visible = msoTrue
.Fill.Solid
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Fill.Transparency = 0#
End With
要获取形状的当前名称,您可以在 VBA 编辑器的“立即”窗口中输入:
?ActiveWindow.Selection.ShapeRange(1).Name
你可以很容易地把它变成一个(单个)宏:
Sub ShowMeTheName()
MsgBox ActiveWindow.Selection.ShapeRange(1).Name
End Sub
请注意,我会亲自将形状重命名为有意义的名称,而不是使用默认名称。只需在即时窗口中执行此操作:
ActiveWindow.Selection.ShapeRange(1).Name = "MyName"
...或创建一个宏来提示输入名称。