2011-10-07 11 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

. C#에 익숙하지 않지만 기본적으로 foreach (ExcelWorkbookObj in oExcelApp.Workbooks.) 그렇다면 ExcelWorkbookObj! = "뭐든지"다음 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

관련 문제