[英]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
每當您無法對項目進行分組時,都會出現某種故障。 請按照以下步驟“重新激活組功能”。 看看這是否對您有幫助:
希望這可以幫助!
這是一個很長的路要走,但是它會起作用(至少對我有用:D)。
您要做的就是制作表格,然后右鍵單擊它們; 您要做的就是將表格另存為圖片(因為JPEG為此非常有用)保存到桌面或其他方便的文件中。 然后將您的桌子(以圖片形式)放回幻燈片中。 您現在應該可以將所有內容組合在一起。
它是PITA,但至少可以使用。 祝你好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.