/// <summary> /// Excelリソース解放 /// </summary> /// <param name="ReleaseMode">リリース対象Enum</param> private void ReleaseExcelComObject(EnumReleaseMode ReleaseMode) { try { // xlSheet解放 if (xlSheet != null) { Marshal.ReleaseComObject(xlSheet); xlSheet = null; } if (ReleaseMode == EnumReleaseMode.Sheet) { return; } // xlSheets解放 if (xlSheets != null) { Marshal.ReleaseComObject(xlSheets); xlSheets = null; } if (ReleaseMode == EnumReleaseMode.Sheets) { return; } // xlBook解放 if (xlBook != null) { Marshal.ReleaseComObject(xlBook); xlBook = null; } if (ReleaseMode == EnumReleaseMode.Book) { return; } // xlBooks解放 if (xlBooks != null) { Marshal.ReleaseComObject(xlBooks); xlBooks = null; } if (ReleaseMode == EnumReleaseMode.Books) { return; } // xlApp解放 if (xlApp != null) { Marshal.ReleaseComObject(xlApp); } } catch (Exception) { throw; } }
/// <summary> /// Excelリソース解放 /// </summary> /// <param name="releaseMode">リリース対象</param> private void ReleaseExcelComObject(EnumReleaseMode releaseMode) { // enumでリソースをどこまで解放するか指定 try { // XlSheet解放 if (xlSheet != null) { Marshal.ReleaseComObject(xlSheet); xlSheet = null; } if (releaseMode == EnumReleaseMode.Sheet) { return; } // xlSheets解放 if (xlSheets != null) { Marshal.ReleaseComObject(xlSheets); xlSheets = null; } if (releaseMode == EnumReleaseMode.Sheets) { return; } // xlBook解放 if (xlBook != null) { try { xlBook.Close(); } finally { Marshal.ReleaseComObject(xlBook); xlBook = null; } } if (releaseMode == EnumReleaseMode.Book) { return; } // xlBooks解放 if (xlBooks != null) { Marshal.ReleaseComObject(xlBooks); xlBooks = null; } if (releaseMode == EnumReleaseMode.Books) { return; } // xlApp解放 if (xlApp != null) { try { // アラートが表示されるように戻して終了 xlApp.DisplayAlerts = true; xlApp.Quit(); } finally { Marshal.ReleaseComObject(xlApp); xlApp = null; } } } catch (Exception ex) { throw; } }