2012-09-26 3 views
2

C#의 자동화를 통해 파워 포인트에 텍스트를 쓰려고합니다.파워 포인트에 텍스트 쓰기 #

나는 그것에 대해 Microsoft.Office.Interop.PowerPoint을 사용하고 있습니다.

내 샘플 코드 : 나는 단지 두 번째 textrange "두 번째 텍스트"인 나에게 출력을 줄 것이다이 코드를 실행하려고

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, textframe을 사용하려고 시도했지만 동일한 작업을 수행 할 수 없습니다. 당신은 코드의 두 블록에서 같은 모양에 액세스하기 때문에

답변

2

당신은 문제가있는 : 슬라이드에 얼마나 많은 모양에 따라

objSlide.Shapes[1].TextFrame.TextRange; 

, 첫 번째 블록은 인덱스 0 또는 참조 할 수 있습니다 두 번째 블록은 인덱스 2를 참조합니다. 어느 쪽이든 두 블록 모두 다른 모양을 참조해야합니다. vb.net 코드로

+0

모양의 인덱스를 변경했습니다. 그러나 프로그램을 실행할 때 오류 셰이프 (알 수없는 멤버) : 정수가 범위를 벗어났습니다. 2의 유효한 범위가 1에서 1이 아닙니다. – Sahil

+0

그런 다음 첫 번째와 두 번째 블록 모두의 텍스트를 바꾸는 대신 동일한 모양으로 맞추기 위해 첫 번째와 두 번째 텍스트를 추가해야합니다. –

+0

빈 슬라이드와 같은 다른 레이아웃에서도이 기능을 사용하려고합니다. 저도 같은 문제에 직면하고 있습니다. – Sahil

1

:

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을 생성합니다. 오리엔테이션과 Targetshape를 아무것도 설정하지 않아야합니다. 단순히 COM은 지옥처럼 엉터리입니다. 그렇지 않으면 파워 포인트가 열려 있습니다. 당신도, 당신을 programm의 말에

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

를 호출 할 수 있습니다.

관련 문제