如果你知道一个形状的Id
,有没有办法获取它的形状?
例如:
Dim myshape As Shape
myshape.Id = 42
myshape = getShapeById(myshape.Id)
或者,我能通过
Name
获取形状吗?Dim myshape As Shape
myshape.Name = "Rectangle 42"
myshape = getShapeByName(myshape.Name)
如果你知道一个形状的Id
,有没有办法获取它的形状?
例如:
Dim myshape As Shape
myshape.Id = 42
myshape = getShapeById(myshape.Id)
Name
获取形状吗?Dim myshape As Shape
myshape.Name = "Rectangle 42"
myshape = getShapeByName(myshape.Name)
通过其.Id
获取形状.Name
比通过其.Name
获取.Id
要更加复杂一些。
但是这是如何完成的:
Sub PrintShapeName()
Debug.Print getNameByID(3, 1)
End Sub
Function getNameByID(shapeID As Long, slide As Integer)
Dim ap As Presentation: Set ap = ActivePresentation
Dim sl As slide: Set sl = ap.Slides(slide)
sl.Shapes.SelectAll
Dim sr As ShapeRange
Set sr = Windows(1).Selection.ShapeRange
Dim s As Shape
For Each s In sr
If s.id = shapeID Then
getNameByID = s.Name
Exit Function
End If
Next
End Function
Name
获取一个 Shape
,你需要执行以下步骤...:Function getShapeByName(shapeName As String, Slide As Integer)
Set getShapeByName = ActivePresentation.Slides(Slide).Shapes(shapeName)
End Function
Dim myshape As Shape
myshape = getShapeByName("Rectangle 42", 1)
不确定是按ID还是按名称,但可以使用sheet Shapes集合对象
Set myShape = <SheetObject>.Shapes("<ShapeName>")
例如
Set myShape = ActiveSheet.Shapes("Rectangle 1")
ActivePresentation.Slides(Slide).Shapes()
,看起来很有前途... - Mateen UlhaqsName = ActivePresentation.Slides(k).Shapes(j).Name
其中k
是幻灯片编号,j
是该幻灯片上的形状编号。
您可以使用以下类似的方法循环遍历每个页面的形状:
k = 1
For j = 1 To ActivePresentation.Slides(k).Shapes.Count
Next j
Chris
.Id
获取形状),就像我的帖子中所示。 - Todd Main