2012-09-26 55 views
2

我想通過c#中的自動化在powerpoint中寫文本。在powerpoint 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; 

當我試圖運行此代碼,它會給我輸出僅次於TextRange的是「第二個文本」。

如果我想在同一張幻燈片中顯示兩個文本,我需要做什麼。

我也嘗試過使用不同的textrange,textframe但我不能這樣做。

回答

2

您遇到的問題,因爲你的代碼塊都訪問相同的形狀:

objSlide.Shapes[1].TextFrame.TextRange; 

根據多少形狀是在幻燈片中,你可能要第一個塊引用索引0或第二個塊參考索引2.無論哪種方式,兩個塊應該引用不同的形狀。

+0

我確實改變了形狀的索引。但是當我運行該程序時,它給了我錯誤形狀(未知成員):整數超出範圍。 2不在1到1的有效範圍內。 – Sahil

+0

然後您應該添加第一和第二段文本以使它們適合相同的形狀,而不是替換第一個和第二個塊中的文本。 –

+0

我也嘗試使用這個不同的佈局,如空白幻燈片。我在那邊也面臨同樣的問題。 – Sahil

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 

下一個

這將創建兩個textshapes。 請不要說你必須將Orientation和Targetshape設置爲無,只是因爲COM太糟糕了。如果你不這樣做,powerpoint將保持開放。 您可能需要調用

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

你PROGRAMM結束了。