2

C#の自動化でパワーポイントにテキストを書きたい。

そのためにMicrosoft.Office.Interop.PowerPointを使用しています。

私のサンプルコード:

objSlide = objSlides.Add(1, PowerPoint.PpSlideLayout.ppLayoutCustom);
objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
objTextRng.Text = "first text";
objTextRng.Font.Name = "Calibri";
objTextRng.Font.Size = 20;

objTextRng = objSlide.Shapes[1].TextFrame.TextRange;
objTextRng.Text = "second text";
objTextRng.Font.Name = "Calibri";
objTextRng.Font.Size = 20;

このコードを実行しようとすると、「2番目のテキスト」である2番目のテキスト範囲のみの出力が表示されます。

同じスライドに両方のテキストを表示したい場合はどうすればよいですか。

私も違うものを使ってみましtextrangetextframeが、同じことができません。

4

2 に答える 2

2

コードの両方のブロックで同じ形状にアクセスするため、問題が発生しています。

objSlide.Shapes[1].TextFrame.TextRange;

スライド内の図形の数に応じて、最初のブロックでインデックス 0 を参照するか、2 番目のブロックでインデックス 2 を参照する必要があります。どちらの方法でも、両方のブロックが異なる図形を参照する必要があります。

于 2012-09-26T20:39:43.893 に答える
1

vb.net コードとして:

Dim n as Integer =2
for i = 1 to 2 
        Dim Orientation As Microsoft.Office.Core.MsoTextOrientation =  Microsoft.Office.Core.MsoTextOrientation.msoTextOrientationHorizontal
        Dim STextLeft As Single = 100*i
        Dim STextWidth As Single = 100
        Dim STextHeight As Single = 100
        Dim STextTop As Single = 100*i
        Dim TargetShape = objslide.shapes.AddTextbox(Orientation, STextLeft, STextTop, STextWidth, STextHeight)

    TargetShape.textframe.textrange=i.tostring
    Orientation=nothing
    targetshape=nothing

これにより、2 つのテキストシェイプが作成されます。COM が非常にくだらないという理由だけで、Orientation と Targetshape を何も設定しなければならないことに注意してください。そうしないと、パワーポイントは開いたままになります。お電話させていただく場合がございます

   GC.Collect()
   GC.WaitForPendingFinalizers()
   GC.Collect()
   GC.WaitForPendingFinalizers()

プログラムの最後にも。

于 2012-09-27T09:37:06.580 に答える