###前提・実現したいこと
実行環境
OS:WindowsServer2012R2
Office:EXCEL2013
###発生している問題・エラーメッセージ
C#で規定のフォルダに格納されている大量(700近く)のEXCELを
特定のシートだけを削除して保存するというのをループで行っています。
ループで最後のブックを保存した時だけ、
「データ リンク プロパティ」というダイアログが表示されて、処理がとまってしまいます。
(最後のブックを保存した時はタイムスタンプで判断)
何故、ダイアログが表示されてしまうのか。
どうしたらダイアログが表示されないようにできるか教えて下さい。
(規定は×ボタンでダイアログを閉じた時の動作で良い)
###該当のソースコード
Excel.Application vApplication = null;
Excel.Workbooks vBooks = null;
Excel.Workbook vBook = null;
Excel.Worksheet vSheet1 = null;
Excel.Worksheet vSheet2 = null;
DirectoryInfo target1 = new DirectoryInfo("D:TEST"); vApplication = new Excel.Application(); vApplication.DisplayAlerts = false; foreach (FileInfo file1 in target1.GetFiles()) { if (file1.Exists) { try { vBooks = vApplication.Workbooks; //ブックを開く vBook = vBooks.Open(file1.FullName, Type.Missing, false, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); if (vBook.ReadOnly) { //取得したEXCELが読み取り専用であった場合 continue; } vSheet1 = (Excel.Worksheet)vBook.Worksheets["Sheet1"]; vSheet2 = (Excel.Worksheet)vBook.Worksheets["Sheet2"]; vSheet1.Delete(); vSheet2.Delete(); vBook.Save(); } catch (Exception ex) { continue; } finally { // COM オブジェクト解放 if (vSheet1 != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(vSheet1); vSheet1 = null; } if (vSheet2 != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(vSheet2); vSheet2 = null; } if (vBook != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(vBook); vBook = null; } if (vBooks != null) { vBooks.Close(); System.Runtime.InteropServices.Marshal.ReleaseComObject(vBooks); vBooks = null; } } } } if (vApplication != null) { //Excel終了 vApplication.Quit(); // COM オブジェクト解放 System.Runtime.InteropServices.Marshal.ReleaseComObject(vApplication); vApplication = null; }
###試したこと
EXCELの詳細設定にて「リンクの自動更新前にメッセージを表示する」のチェックを外した
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。