如何在另一个PowerPoint.Slide上分组多个形状

时间:2014-12-03 09:55:59

标签: vsto office-interop powerpoint-vba

我想在另一张幻灯片中分组多个形状。这项任务似乎很简单。但是,问题是需要分组的形状不在当前幻灯片上。

例如,

当前幻灯片是幻灯片编号2.我需要分组的形状在幻灯片编号10上。当选择幻灯片编号10上的形状时,它总是会导致错误。看来,我们无法改变幻灯片的选择。

我的代码如下:

PowerPoint.Slides allSlides = ppApp.ActivePresentation.Slides;

for (int i = 1; i <= allSlides.Count; i++)

{

PowerPoint.Slide slide = allSlides[i]; if (slide.SlideId == 10) { //- Select the slide first slide.Select(); //- Select (assuming) shape1 and shape3 slide.Shapes[1].Select(); //- Error: The shape1 cannot be selected???? slide.Shapes[3].Select(Microsoft.Office.Core.MsoTriState.msoFalse); PowerPoint.ShapeRange shapeRange = ppApp.ActiveWindow.Selection.ShapeRange; shapeRange.Group(); } }

1 个答案:

答案 0 :(得分:1)

除非没有办法,否则不要选择幻灯片或形状。 而且几乎从来没有你需要选择它们的情况。

在VBA中,如果您想使用幻灯片10上的内容:

Dim oGrpShp as shape 

With ActivePresentation.Slides(10)
  ' And here you could work with the slide's ShapeRange
  set oGrpShp = .Shapes.Range.Group
  ' now you can work with the group as needed:
  oGrpShape.left = 300 ' or whatever
End With

如果您在包含占位符的幻灯片上尝试此操作,则会出错;您不能在一个组中包含占位符。