2

我想通过 c# 中的自动化在 powerpoint 中编写文本。

为此,我正在使用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;

当我尝试运行此代码时,它只会为我提供第二个文本范围的输出,即“第二个文本”。

如果我想在同一张幻灯片中显示两个文本,我需要做什么。

我也尝试使用 different textrangetextframe但我不能这样做。

4

2 回答 2

2

您遇到问题是因为您在两个代码块中访问相同的形状:

objSlide.Shapes[1].TextFrame.TextRange;

根据幻灯片中有多少个形状,您可能希望第一个块引用索引 0 或第二个块引用索引 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

下一个

这将创建两个文本形状。请不要将 Orientation 和 Targetshape 设置为空,仅仅因为 COM 非常糟糕。如果不这样做,PowerPoint 将保持打开状态。您可能需要致电

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

在你的程序结束时,也是。

于 2012-09-27T09:37:06.580 回答