VBA .ConvertToShape 之后的 PowerPoint 2016 形状 BuildFreeform 属性

VBA PowerPoint 2016 shapes BuildFreeform properties after .ConvertToShape

使用.ConvertToShape 创建形状后,它在Shapes 中的索引是什么?我如何给它一个线条颜色?我想创建几个 msoFreeform 形状,并给它们不同的颜色。我已经走到这一步了:

With myDocument.Shapes.BuildFreeform(EditingType:=msoEditingCorner, X1:=X(1), Y1:=Y(1))
    For i = 1 To 361
    .AddNodes SegmentType:=msoSegmentLine, EditingType:=msoEditingAuto, X1:=X(i), Y1:=Y(i)
    Next i
    .ConvertToShape
End With

For Each shp In ActivePresentation.Slides(1).Shapes
    If shp.Type = 5 Then 'msoFreeform
    shp.Line.ForeColor.RGB = RGB(0, 0, 64) 'this will however colour all in the same colour
    shp.Line.Weight = 2.5
    End If
    Debug.Print shp.Type
Next shp

我想为创建的自由形状赋予颜色,然后创建另一个自由形状并为其赋予另一种颜色,依此类推,用于多个自由形状。感谢您的帮助。

作为一般规则,最好提供一个独立运行的示例,这样任何想要提供帮助的人都可以从一个简单的 copy/paste 开始,而不必调整您的代码.

无论如何,.ConvertToShape returns 是对新创建形状的引用,因此您可以立即使用该引用来设置颜色或您喜欢的任何属性。在这里,我只是抓取新形状的名称并将其显示在消息框中:

Sub TryThis()

Dim oSh As Shape
Dim i As Long

With ActivePresentation.Slides(1).Shapes.BuildFreeform(EditingType:=msoEditingCorner, X1:=x(1), Y1:=y(1))
    For i = 1 To 361
    .AddNodes SegmentType:=msoSegmentLine, EditingType:=msoEditingAuto, X1:=x(i), Y1:=y(i)
    Next i
    Set oSh = .ConvertToShape
    MsgBox oSh.Name
    
End With

End Sub