- - PR -
Excelのプロセス終了方法は??
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-08-18 13:02
>xlSheet.Application.Visible = True こいつ外すとどうなりますか? 私もVB6.0のときに同現象で悩んだ結果 たしかApplicationプロパティを利用するとプロセスが残る現象が 発生してたように記憶しています。 遠い昔の話なので間違っていたらすみません(^^; | ||||
|
投稿日時: 2003-08-18 13:26
こんにちは。
わたしも、この問題には長いこと苦しめられました。 解決方法としては、 xlSheet.Application.Visible = True の後で xlSheet.Application.ScreenUpdating = True を試してみてください。 これは、EXCEL97以降の既知の問題のようです。 マイクロソフト サポート技術情報 - 187745 [BUG] オートメーション機能を使用していると Microsoft Excel が正しく再描画されない http://support.microsoft.com/default.aspx?scid=kb;ja;187745 参考にしてください。 | ||||
|
投稿日時: 2003-08-18 13:44
>xlSheet.Application.Visible = True の後で
>xlSheet.Application.ScreenUpdating = True VB6のときもそうでしたが、なんでxlsheetをいきなりVisible=Trueに するのですかねぇ? 手順どおりなら、xlap→xlBook→xlsheetではなのかしらん?(現象とは 直接関係無いかもしれませんが) それとVB6のときにアーリーバインド、レイトバインドともWithを使ったほうが 問題が少なかったように思うのですが... あ、そういえば私がVB6のときこの問題に出くわしたときは確かWithEventsを 使うときれいに落ちてくれたような覚えがあります。というかExcel側で操作 されるという前提ならWithEventsのほうが良いですよ。(.netじゃ使えるのか どうか知りませんが) | ||||
|
投稿日時: 2003-08-18 14:01
> 手順どおりなら、xlap→xlBook→xlsheetではなのかしらん?(現象とは
> 直接関係無いかもしれませんが) おっしゃるとおりですが、今問題にしている部分の改善方法が分かり難くなる事から、元のコードに追加する形にしました。 ご了承ください。 確かに、OLEオートメーション/COMは循環参照などに弱いので、このあたりの理解は無用のトラブルを減らす上で重要ですね。 [ メッセージ編集済み 編集者: リックス 編集日時 2003-08-18 14:07 ] | ||||
|
投稿日時: 2003-08-18 17:05
手順としてsheet→book→appの順に表示しているのではなく、sheetを作成したappを、sheetから参照して表示させているのだから、かまわないのでは? で、元の質問はプログラムから終了させたときにエクセルのインスタンスが残る、という問題で、リックスさんの提示されたMSのページは「OLEオートメーションで起動したエクセルインスタンスを手動で終了させると(そのインスタンスが残るために)、次回起動時に正しく描画されない」という問題だと思うのですが、プログラム上で表示させてから終了させるとインスタンスが解放されるのでしょうか? | ||||
|
投稿日時: 2003-08-18 18:29
こんにちは。
すみません。私の方法では現象は改善しませんでした。 表面的には同じEXCELのプロセスが残留する現象だったのですが、 想定していた障害とは違っていました。 未確認で返答してしまい失礼しました。 問題の挙動を見ていると、GC絡みの問題のように感じですね。 | ||||
|
投稿日時: 2003-08-18 18:52
「[ASP.NET]EXCELが終了しない」
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3343&forum=7 「やっぱりわからないGCの動作」 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=2904&forum=7 「VB.NETでEXCELが終了しない。」 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=4524&forum=7 「続Excelが終了できない」 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3895&forum=7 ちなみに、エクセルを起動したプログラムを終了すれば、エクセルのインスタンスも消えると思います。 [ メッセージ編集済み 編集者: Jitta 編集日時 2003-08-18 18:56 ] | ||||
|
投稿日時: 2003-08-18 19:36
皆様有り難うございます。
返信が遅れ、大変申し訳ございません。 色々試している最中です・・・ 引用:--------------------------------------------------------------- meiさん SaveAsで失敗している訳じゃないですよね? -------------------------------------------------------------------- Save無しで実行後も状況は変わりませんでした。 引用:--------------------------------------------------------------- リックスさん xlSheet.Application.Visible = True の後で xlSheet.Application.ScreenUpdating = True -------------------------------------------------------------------- 上記行を追加後も状況は変わりませんでした。 引用:--------------------------------------------------------------- takiraさん xlSheet.Application.Visible = True こいつ外すとどうなりますか? -------------------------------------------------------------------- そうなんですよ。VB6.0でも同様の悩みがあったような・・・ 上記行を削除後に実行でも状況は変わりませんでした。 引用:--------------------------------------------------------------- Jittaさん 「[ASP.NET]EXCELが終了しない」 http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3343&forum=7 おくちnさん WebConfigに追加した <identity impersonate="true" /> がいけなかったみたいです。 当初、EXCELオブジェクトがNEW出来なかったので、上記の一行を追加したのですが。 EXCELオブジェクトをコンポーネントサービスもしくは、DCOMCNFGでセキュリティの 起動の許可に、ASPNETユーザーを追加すればOKでした。 -------------------------------------------------------------------- 申し訳ございません。過去履歴を検索しきれませんでした。 上記を試す前に、VB.NETで実行してみたところ(VB.NETは初めてですが・・)プロセス は残っておりませんでした。「VB.NET」では成功です! あとは、ASP.NETでどうなるか・・・・ 引き続きやってみます。 |