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)
Shape
をName
で取得するには、次のようにします...:
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)
.Name
によって形状.Id
を取得することは、 .Id
によってその.Name
を取得する よりもやや複雑です。
しかし、これがその方法です。
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
IDでわからないが、名前でシートShapesコレクションオブジェクトを使用する
Set myShape = <SheetObject>.Shapes("<ShapeName>")
例えば
Set myShape = ActiveSheet.Shapes("Rectangle 1")
sName = ActivePresentation.Slides(k).Shapes(j).Name
ここで、k
はスライド番号、j
とそのスライドの形状番号です。
次のような方法で、各ページの形状をループできます。
k = 1
For j = 1 To ActivePresentation.Slides(k).Shapes.Count
Next j
クリス