エクセル終了の制御 – プログラミング – Home

通知
すべてクリア

エクセル終了の制御


wisteria
 wisteria
(@wisteria)
ゲスト
結合: 17年前
投稿: 5
Topic starter  

開発環境
windows 2000
Excel 2000
Visual Studio .NET 2003

wisteriaと申します。

自作アプリからエクセルを操作する方法で質問があります。
http://support.microsoft.com/kb/308407/
を参考にし、タイプライブラリを使用しセルの読み書きができる
ところまでできました.

ここで質問なんですが、
アプリがエクセルを操作しているときは、
ユーザがエクセルを終了できなくする方法はありますでしょうか。

またはユーザがエクセルを終了したことをアプリは
イベントとして受け取ることはできるでしょうか。

以上よろしくお願いします。


引用解決済
トピックタグ
麩
 麩
(@麩)
ゲスト
結合: 17年前
投稿: 95
 

終了イベントはライブラリにありそうな気がするけど、WindowsAPIで
WaitForSingleObjectにエクセルのプロセスハンドル放り込んで終了しているか
チェックする事は出来る。
終了阻止は出来ても、タスクマネージャなどからの強制終了はほぼ阻止不可能
だと考えたほうがいいしそこまでするべきじゃない。
ハングアップと勘違いされて強制終了されるのは無理だと思うから目的次第じゃ
ないかと思う。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> またはユーザがエクセルを終了したことをアプリは
> イベントとして受け取ることはできるでしょうか。
カナリ面倒です。
WordやPPなら簡単にイベント拾えるけど、Excelの場合は簡単には出来ません。

参考
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=40311&forum=7

というか、普通はそういうことをやりたいのであればExcel主体つまりExcel VBAにすべ
きでしょう。
VC++から使う場合は単なるxlsファイル作成用みたないな感じで使わないとすべてを面倒
見るのは至難でしょうね。


返信引用
玲音 (st.lain)
 玲音 (st.lain)
(@玲音 (st.lain))
ゲスト
結合: 17年前
投稿: 89
 

# 見当外れの回答でしたら無視してください。

>> BUG: ATL COM イベント ハンドラは、逆順序で引数を受信することがあります。
> http://support.microsoft.com/kb/288724/ja
タイトルはATLCOMに対するバグ資料ですが、中身はWorkbookBeforeClose()の
サンプルです。
(VC++2003では直ってるっぽいです)

Bookの終了(否、アプリの終了)は取れますが、それがユーザーからなのか、
アプリからなのかを判断するには更に細工が必要だと思われます。

> アプリがエクセルを操作しているときは、
> ユーザがエクセルを終了できなくする方法はありますでしょうか。
このようなパターンって大抵、アプリ操作対象のExcel自体が非表示な気がします。
(仕様上のことになってくるのでツッコんでも仕方がないですが・・)


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

>このようなパターンって大抵、アプリ操作対象のExcel自体が非表示な気がします。
一個前の質問が
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200709/07090022.txt
だったので、Excel自体は表示しているものと思っています。

それとBookを非表示にしていても多分WorkbookBeforeCloseイベントは取れますので、
Bookを開いていさえすればとりあえずは抑制はできるんじゃないかなぁと。


返信引用
玲音 (st.lain)
 玲音 (st.lain)
(@玲音 (st.lain))
ゲスト
結合: 17年前
投稿: 89
 

一個目のスレッドがあったのですね orz

> Bookを非表示にしていても多分WorkbookBeforeCloseイベントは取れますので、
MSのサンプルで確認したところ、Excelが非表示、MsgBoxのみが表示、という
状態になりました。(もちろん、イベント自体も取れてます)

Excel自体が表示されているとすると、複数Bookのオープン状態自体も加味
しないといけないのカナ・・・。
(対応イベントがWorkbookOpenだと思うのですが、開いた後のようですね。)


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました