powerpoint c#加载项形状分组问题

我使用Visual Studio 2010开发PowerPoint 2010加载项,并且在幻灯片上对两个对象进行分组时遇到了重大问题。 我正在尝试创建两个对象,将它们放在幻灯片上并将它们全部分组到同一个函数中。 添加对象并将它们放在幻灯片上不是问题。 说到分组部分……

我试过了:

PowerPoint._Application myPPT = Globals.ThisAddIn.Application; PowerPoint.Slide curSlide = myPPT.ActiveWindow.View.Slide; string[] myRangeArray = new string[2]; myRangeArray[0] = "nameOfShape0"; myRangeArray[1] = "nameOfShape1"; curSlide.Shapes.Range(myRangeArray).Group(); 

 PowerPoint._Application myPPT = Globals.ThisAddIn.Application; PowerPoint.Slide curSlide = myPPT.ActiveWindow.View.Slide; curSlide.Shapes.Range(Array("nameOfShape0", "nameOfShape1")).Group(); 

两者都悲惨地失败了。 我对此感到非常沮丧,我真的希望某种善良的灵魂能为我找到解决方案。 谢谢。

更新:这是我正在使用的完整代码:

 PowerPoint._Application myPPT = Globals.ThisAddIn.Application; PowerPoint.Slide curSlide = myPPT.ActiveWindow.View.Slide; PowerPoint.Shape browser = curSlide.Shapes.AddOLEObject(110, 70, 500, 400, "Shell.Explorer.2"); var slideName = "webBrowser_0"; browser.Name = slideName; PowerPoint.Shape rectangle = curSlide.Shapes.AddShape(Microsoft.Office.Core.MsoAutoShapeType.msoShapeRectangle, 110, 70, 500, 400); rectangle.Name = "shape2"; string[] myRangeArray = new string[2]; myRangeArray[0] = "webBrowser_0"; myRangeArray[1] = "shape2"; curSlide.Shapes.Range(myRangeArray).Group(); 

我收到的错误是“ShapeRange对象必须包含至少两个项目”

你的代码对我来说很好。 试试这个:

 private void ThisAddIn_Startup(object sender, System.EventArgs e) { this.Application.PresentationNewSlide += Application_PresentationNewSlide; } void Application_PresentationNewSlide(PowerPoint.Slide Sld) { PowerPoint.Shape textBox = Sld.Shapes.AddTextbox(Office.MsoTextOrientation.msoTextOrientationHorizontal, 0, 0, 500, 50); textBox.Name = "shape1"; textBox.TextFrame.TextRange.InsertAfter("This text was added by using code."); textBox = Sld.Shapes.AddTextbox(Office.MsoTextOrientation.msoTextOrientationHorizontal, 0, 100, 500, 50); textBox.TextFrame.TextRange.InsertAfter("This text was also added by using code."); textBox.Name = "shape2"; PowerPoint._Application myPPT = Globals.ThisAddIn.Application; PowerPoint.Slide curSlide = myPPT.ActiveWindow.View.Slide; string[] myRangeArray = new string[2]; myRangeArray[0] = "shape1"; myRangeArray[1] = "shape2"; curSlide.Shapes.Range(myRangeArray).Group(); } 

如果您开始使用的幻灯片的布局包括内容占位符或可以包含ole对象的其他占位符,则PPT可能会弹出新创建的OLE对象INTO该占位符。 占位符不能与其他形状分组。 如果结果是问题,可以从幻灯片开始,其布局不包含可以包含OLE对象的占位符,或者在创建OLE对象之前删除占位符,或者创建OLE对象,复制它(给你一个未包含在占位符中的OLE对象),然后删除原始对象。