2013-10-29 31 views
1

我打開一個PowerPoint幻燈片一些C#代碼,簡報發行刷新圖表,然後退出。退出時

這工作得很好,除非用戶已經有一個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(); 
}