簡體   English   中英

無法在Powerpoint 2010中對某些形狀進行分組

[英]Unable to Group some shapes in Powerpoint 2010

我在ShapeRange上使用.Group方法有一些困難。

例如,我無法將表格與文本框分組,也無法將幻燈片的標題形狀與文本框分組,等等。我注意到Powerpoint不允許您將某些形狀分組在一起,例如“分組”在上下文菜單上禁用了該選項:

某些形狀的組已禁用

我在VBA中嘗試了以下操作,這可能會失敗:

Sub TestGroupShapes()

    Dim sld As slide
    Dim tb As Shape
    Dim tb2 As Shape
    Dim tbl As Shape

    Set sld = ActivePresentation.Slides(1)
    Set tbl = sld.Shapes.AddTable(3, 3, 100, 100, 100, 100)
    tbl.Name = "Table"
    Set tb = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 200, 200, 50, 50)
    tb.Fill.Visible = msoCTrue
    tb.Name = "TextBox1"
    Set tb2 = sld.Shapes.AddTextbox(msoTextOrientationHorizontal, 300, 300, 50, 50)
    tb2.Fill.Visible = msoCTrue
    tb2.Name = "TextBox2"

    '## This works. I am able to group two textbox shapes together:
    sld.Shapes.Range(Array(tb2.Name, tb.Name)).Group

    '## This fails, I am not able to group a shape with a Table
    '   Also fails, e.g., if I try to group with the slide's Title shape, etc.
    sld.Shapes.Range(Array(tbl.Name, tb.Name)).Group


End Sub

我還有其他方法可以將某些形狀“綁定”在一起嗎?

更新5/25/2013

問題在於用戶可以復制的形狀(Ctrl + V / etc)保留與原始形狀相同的.Name 我正在開發的應用程序將唯一的ID分配給它創建的形狀,但是如果用戶將其復制,這些ID將不會保持唯一。 例如,某些用戶可能會“復制”現有文本框,而不是插入新的文本框。

由於需要應用程序來維護和更新形狀(表格,文本框,圖表等),因此,通過“復制”現有形狀創建的任何形狀都可能引起問題,因為我的應用程序將無法確定哪個形狀形狀以更新,刪除等

我希望做的是Group在一起。 盡管它不是安全的(用戶仍然可以手動Ungroup它們Ungroup ,但是我覺得那至少是一種額外的安全措施。)

無法將某些形狀組合為一個形狀。 但是您可以使用ShapeRange將不同類型的形狀綁定在一起。 然后,可以在其自身的形狀范圍上設置一些屬性,而在特定項目上設置其他屬性。 HTH

Sub test()

    Dim tableShape As Shape
    Dim textboxShape1 As Shape
    Dim textboxShape2 As Shape
    Dim myShapeRange As ShapeRange

    With ActivePresentation.Slides(1)
        Set tableShape = .Shapes.AddTable(3, 3, 100, 100, 100, 100)
        tableShape.Name = "Table"

        Set textboxShape1 = .Shapes.AddTextbox(msoTextOrientationHorizontal, 200, 200, 50, 50)
        textboxShape1.Name = "TextBox1"

        Set textboxShape2 = .Shapes.AddTextbox(msoTextOrientationHorizontal, 300, 300, 50, 50)
        textboxShape2.Name = "TextBox2"

        Set myShapeRange = .Shapes.Range(Array("Table", "TextBox1", "TextBox2"))
    End With

    Call FormatShapes(myShapeRange)

End Sub

Private Sub FormatShapes(inputShapeRange As ShapeRange)
    Dim shapeItem As Shape

    With inputShapeRange
        .Align msoAlignLefts, msoFalse
        .AlternativeText = "My group 123"
    End With

    For Each shapeItem In inputShapeRange
        With shapeItem
            .Fill.Visible = msoTrue
            .Fill.Solid
            .Fill.ForeColor.RGB = RGB(255, 0, 0)
            .Fill.TwoColorGradient msoGradientHorizontal, 1
        End With
    Next shapeItem
End Sub

每當您無法對項目進行分組時,都會出現某種故障。 請按照以下步驟“重新激活組功能”。 看看這是否對您有幫助:

  1. 將新幻燈片添加到演示文稿中(您可以稍后將其刪除)
  2. 插入三種形狀的三種不同顏色
  3. 排列形狀以嘗試分組(分組要素應返回)
  4. 如果沒有返回,則臨時解決方法是右鍵單擊您選擇的3個項目,然后選擇“圖片”粘貼選項(看起來像剪貼板和圖片圖標在一起),這也應該將這些項目組合在一起。

希望這可以幫助!

這是一個很長的路要走,但是它會起作用(至少對我有用:D)。

您要做的就是制作表格,然后右鍵單擊它們; 您要做的就是將表格另存為圖片(因為JPEG為此非常有用)保存到桌面或其他方便的文件中。 然后將您的桌子(以圖片形式)放回幻燈片中。 您現在應該可以將所有內容組合在一起。

它是PITA,但至少可以使用。 祝你好運!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM