我.Group
在ShapeRange
.
例如,我不能用文本框对表格进行分组,也不能用文本框对幻灯片的标题形状进行分组,等等。我注意到 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
还有其他方法可以用来将某些形状“捆绑”在一起吗?
2013 年 5 月 25 日更新
问题是用户可能复制的形状(Ctrl+V/等).Name
与原始形状保持一致。我正在开发的应用程序为其创建的形状分配唯一的 ID,但如果用户复制它们,这些 ID 将不会保持唯一。例如,某些用户可能会“复制”现有的文本框,而不是插入新的文本框。
由于应用程序需要维护和更新形状(表格、文本框、图表等),因此通过“复制”现有形状创建的任何形状都可能导致问题,因为我的应用程序将不再能够确定哪个要更新、删除等的形状。
我希望做的是Group
他们在一起。虽然它不是故障安全的(用户仍然可以手动操作Ungroup
它们,但我觉得这至少是一个额外的安全措施。