2011-10-07 63 views
0

我試圖找到所有打開的Excel工作簿並殺死一個特定的人。 但是,當我循環並打印工作簿的標題時,它只顯示一個,但我已打開多個工作簿。C#找到所有打開的Excel工作表並只殺死一個

  //Excel Application Object 
      Microsoft.Office.Interop.Excel.Application oExcelApp; 
      this.Activate(); 

      System.Diagnostics.Process[] AllProcesses = System.Diagnostics.Process.GetProcessesByName("excel"); 
    foreach (Process ExcelProcess in AllProcesses) 
      { 
       //Display the name of the object. 
       MessageBox.Show(oExcelApp.ActiveWorkbook.FullName); 

      //if (myHashtable.ContainsKey(ExcelProcess.Id) == false) 
       // ExcelProcess.Kill(); 
      } 
+3

通常有Excel進程運行的只有一個實例,無論工作簿的數量。我不熟悉C#,但你基本上想:foreach(ExcelWorkbookObj在oExcelApp.Workbooks中,然後如果ExcelWorkbookObj!=「whatever」,那麼ExcelWorkbookObj.Close – Banjoe

+1

要麼你沒有發佈完整的代碼片段,或者你沒有使用'ExcelProcess' ,循環變量 –

+0

+1到Banjoe的評論 – brettdj

回答

1

這個工作對我來說:

string bookTitle = "test"; // The book title that you want to close. 
Process[] AllProcesses = Process.GetProcessesByName("excel"); 
foreach (var process in AllProcesses) 
{ 
    string tempTitle = process.MainWindowTitle.Split('-')[1].TrimStart(); 
    if (bookTitle == tempTitle) 
     { 
      process.Kill(); 
     } 
} 
+0

這是不是殺了所有的excel工作簿? – m4n07

+0

不,只有書名爲'bookTitle'。 – Kakashi

+0

它工作正常。 :( 。 謝謝您的幫助 ! – m4n07

相關問題