C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: VB.NET上からエクセルを起動、終了後


(過去ログ 136 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■80238 / inTopicNo.1)  VB.NET上からエクセルを起動、終了後プロセスが残る
  
□投稿者/ WAN (21回)-(2016/06/23(Thu) 21:23:55)

分類:[VB.NET/VB2005 以降] 

失礼致します。

環境はVisual Studio 2012の環境下で、言語はVB2012、.netフレームワークは3.0です。

VB.NET上からエクセルを起動し、その後終了する処理を行っているのですが、
エクセルは終了してもプロセスが残ってしまいます。

プロセスを正しく終了するにはどのようにすれば知恵をお借りできればと思い書き込みました。
よろしくお願い致します。

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim myExcel As New Excel.Application
Dim books As Excel.Workbooks
Dim book As Excel.Workbook

Try
books = myExcel.Workbooks
book = books.Add

book.Close()
myExcel.Quit()
Finally
' COM オブジェクトの解放
System.Runtime.InteropServices.Marshal.ReleaseComObject(book)
System.Runtime.InteropServices.Marshal.ReleaseComObject(books)
System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel)
End Try
End Sub
End Class
引用返信 編集キー/
■80246 / inTopicNo.2)  Re[1]: VB.NET上からエクセルを起動、終了後
□投稿者/ daive (121回)-(2016/06/24(Fri) 06:39:48)
2016/06/24(Fri) 06:58:13 編集(投稿者)

ここのサイトの過去ログは、確認されましたか?
過去ログ検索が可能です。

比較的まとまっているサイト例:VB2008事例ですが、応用可能。
EXCELでお仕事!の
「Visual Basic」のメニュー
コンテンツ全般、
http://www.asahi-net.or.jp/~ef2o-inue/menu/menu13.html
を順番に理解していってください。

印刷はExcelで行ないましょう。
Excelがプロセスに居座ってしまう!?
Excelがプロセスに居座ってしまう!?その2

余り書かれませんが、
EXCEL シート側の問題、EXCEL VBA 側の問題で
EXCEL のプロセスが残る場合もあります。
手動で開いて、EXCELが落ちたり、何らかのエラーが発生するブックも
EXCEL のプロセスが残ったりする場合があります。
EXCEL VBA 側で、
 Debug.Print / Debug.Assert
 On Error で握り潰したエラーで解放漏れが無いか、
 VBA 側のオブジェクトの解放が正しく行われているか
 シート上のオブジェクトにメモリーリークや、異常が無いか
 VS20xx で使用する、EXCEL ブックでは、理解出来るまでは、
   EXCEL VBA の併用は避けます。

テストは、既存のブックを使わずに、新規に検証用の軽いブックを作って確認した後に
既存のブックで、確認します。

事前バインディングでは、
Interop.Excel は、バージョン依存ですが、
日本語版では、日本語用となっていてます。
⇒その割には、EXCEL複数バージョンインストール下では、
  最後に更新されたバージョンのEXCELが起動します。
 VS20xxでのEXCEL 起動は(VSTO含めて)、理解出来るまでは、
 EXCEL 複数バージョンインストールは行わない方が、混乱しなくて済みます。

VB20xx Windows Form での、ボタン押しイベントの発生は、
ボタン名.PerformClick
ですが、イベントの発生の前程条件があります。
(Visible = True & Enabled = True、
 他にも、PerfomClickが使えるコントロールはあります。)
EXCEL VBA では、
ボタン名.Value = True
が該当します。
引用返信 編集キー/
■80267 / inTopicNo.3)  Re[2]: VB.NET上からエクセルを起動、終了後
□投稿者/ WAN (22回)-(2016/06/24(Fri) 23:46:33)
ご回答ありがとうございます。

http://www.asahi-net.or.jp/~ef2o-inue/menu/menu13.html

こちらのページまでは辿り着いていましたが
慌てていた為か、上手くできていませんでした。

落ち着いて上記のページを参考にソースを調整したら
エクセルのプロセスを終了することができました。

ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -