3

我使用 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 对象必须包含至少两个项目”

4

2 回答 2

5

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

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();
}
于 2012-08-14T20:20:17.993 回答
0

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

于 2012-08-15T14:15:51.773 回答