2013-10-29 2 views
1

Powerpoint 슬라이드를 열고 그래프를 새로 고친 다음 종료하는 C# 코드가 있습니다.종료 할 때의 Powerpoint 문제

사용자가 이미 Powerpoint 슬라이드를 열어 놓지 않으면이 기능이 제대로 작동합니다.이 경우 exe가 실행되면 기존 세션이 닫힙니다 (변경 사항이 손실 될 수 있습니다).

PPT가 백그라운드에서 열리고, 아래 코드 (템플릿 열기, 일부 그래프 새로 고침, 저장 및 닫기)를 실행하는 EXE를 실행하는 경우 문제가 발생합니다. 애플리케이션 종료시 변수 ppApp가 삭제됩니다. PPT를 실행할 때마다 닫히는 것 같습니다.

ppApp.Quit()를 생략해도 마찬가지입니다.

PowerPoint.Application ppApp = new PowerPoint.Application();     
PowerPoint.Presentation ppPres = ppApp.Presentations.Open(MITemplate, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse); 

//refresh graphs 
foreach(PowerPoint.Slide sl in ppPres.Slides) 
{ 
    foreach (PowerPoint.Shape sh in sl.Shapes) 
    { 

     if (sh.Type.Equals(Microsoft.Office.Core.MsoShapeType.msoLinkedOLEObject)) 
     { 
      sh.LinkFormat.SourceFullName = XLTemplate + sh.LinkFormat.SourceFullName.Substring(sh.LinkFormat.SourceFullName.LastIndexOf("\\") + 1); 
      sh.LinkFormat.Update(); 
     } 
    } 
} 
ppPres.SaveAs(outputFilename); 
ppPres.Close(); 
ppApp.Quit(); 

답변

0

당신은 많은 다른 프레젠테이션이 열려있는 방법을 확인하고 당신은 하나의 경우에만 종료 할 수 있습니다 :

ppPres.SaveAs(outputFilename); 

var presentations = ppApp.Presentations; 

if (presentations.Count <= 1) 
{ 
    ppPres.Close(); 
    ppApp.Quit(); 
}