【发布时间】:2015-08-05 05:00:55
【问题描述】:
我在 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
我可以使用其他方法将某些形状“绑定”在一起吗?
2013 年 5 月 25 日更新
问题是用户可能复制的形状(Ctrl+V/etc)与原始形状保持相同的.Name。我正在开发的应用程序为其创建的形状分配唯一的 ID,但如果用户复制它们,这些 ID 将不会保持唯一。例如,某些用户可能会“复制”现有的文本框,而不是插入 new 文本框。
由于应用程序需要维护和更新形状(表格、文本框、图表等),通过“复制”现有形状创建的任何形状都可能导致问题,因为我的应用程序将不再能够确定要更新、删除等的形状。
我希望做的是Group他们在一起。虽然它不是故障安全(用户仍然可以手动Ungroup他们,但我觉得这至少是一个额外的安全保障。
【问题讨论】:
-
我喜欢你的问题......不幸的是,我认为对表格进行分组是不可行的:(
-
我发现 :) 我很奇怪无法对表格和其他形状进行分组,或者某些形状无法使用这种方法,但我找不到关于哪些形状不能分组,或者为什么不能分组:(
标签: vba powerpoint