3

Visual Studio 2010 を使用して PowerPoint 2010 アドインを開発していますが、スライド上の 2 つのオブジェクトをグループ化する際に重大な問題が発生しています。2 つのオブジェクトを作成し、それらをスライドに配置して、すべて同じ関数でグループ化しようとしています。オブジェクトを追加してスライドに配置することは問題ではありません。グループ化の部分となると……。

私が試してみました:

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 オブジェクトには少なくとも 2 つの項目が含まれている必要があります」です。

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 に答える