|
■No94073 (魔界の仮面弁士) に追記 > その時に表示されていたエラーメッセージを教えてください。 > > 閉じるときに、現在開いている Excel 文書はどうしますか? 保存しますか?
上記 2 点の逆質問への回答待ちですが、それはさておき。
> 1) 一つ一つ、保存するかどうかを問い合わせた上で閉じる > 2) 保存確認等は行わせず、すべて保存せずに閉じる(未保存の内容は失われる) > とりあえず、上記の 1) ならこんな感じ。
今度は 2) の実装例。
Public Sub CloseExcelApp() Dim excel As Object = Nothing Try excel = GetObject(, "Excel.Application") Dim books = CallByName(excel, "Workbooks", CallType.Get) For n = CInt(CallByName(books, "Count", CallType.Get)) To 1 Step -1 Dim book = CallByName(books, "[DispId=0]", CallType.Get, n) ' ワークブックを保存せずに閉じる CallByName(book, "Close", CallType.Method, False) ReleaseComObject(book) Next ReleaseComObject(books)
'Quit メソッドを呼び出して、Excel を終了させる CallByName(excel, "Quit", CallType.Method) Catch Finally ReleaseComObject(excel) End Try End Sub
さて、Excel を操作するにあたって注意点があります。
開いている Excel が、「セルの編集作業中」「ファイル選択画面を開いている」 「メッセージボックス等を表示している」などといった状態にあった場合、 VB 等からの指示……今回のケースであれば、Workbook の Close メソッドや Application の Quit メソッドなどによる終了操作は一切受け付けません。
メソッドを呼び出してもエラーとなってしまうため、 Try〜Catchで例外処理する必要があります。
|