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
使用.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