VBA PowerPoint创建所有类型的形状

时间:2015-08-13 10:03:49

标签: vba powerpoint

我正在为powerpoint开发vba中的一些功能。现在要测试我的解决方案,我需要在幻灯片上具有所有形状类型的powerpoint幻灯片。

他们中的一些人很容易创作:

https://msdn.microsoft.com/de-de/library/office/Ff744590.aspx

但是其他如type = msoOLEControlObject或= msoEmbeddedOLEObject或= msoplaceholder我不知道如何创建。但我需要所有不同的shape.types。

知道如何自动创建它们吗?

我试图用这个来做:

        Sub CreateShapeType()
        Dim slnr

        slnr = ActiveWindow.Selection.SlideRange.SlideNumber
        Set myDocument = ActivePresentation.Slides(slnr)
        myDocument.Shapes.AddShape Type:=msoOLEControlObject, _
            left:=100, top:=50, Width:=100, Height:=200

        End Sub

即使有东西被创建 - 当我控制形状时,它们没有“msoOLEControlObject”类型。

使用循环进行自动创建将是完美的。请参阅此示例(它可以工作,但仅适用于所有自动形状):

        Sub CreateAutoshapes()
          Dim i As Integer
          Dim slnr, t As Integer
          Dim shp As Shape

          slnr = ActiveWindow.Selection.SlideRange.SlideNumber
          t = 10
          For i = 1 To 137
            Set shp = ActivePresentation.Slides(slnr).Shapes.AddShape(i, 100, t, 60, 60)
            shp.TextFrame.TextRange.Characters.Text = i
            t = t + 70
          Next
          ' skip 138 - not supported
          If CInt(Application.Version) >= 12 Then
            For i = 139 To 183
              Set shp = ActiveSheet.Shapes.AddShape(i, 100, t, 60, 60)
              shp.TextFrame.TextRange.Characters.Text = i
              t = t + 70
            Next
          End If
        End Sub

知道如何创建所有不同的类型吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

每种形状类型都有特定的方法。 AddShape特定于AutoShapes。

查看其他方法,如AddOLEObject,AddPlaceholder,AddPicture,AddTable,AddSmartArt等,以添加其他形状类型。