Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11477 / 13646 ツリー ←次へ | 前へ→

【15808】「Excelそのもの」のイベントを検出する方法 nowak 04/7/7(水) 0:18 質問[未読]
【15811】Re:「Excelそのもの」のイベントを検... IROC 04/7/7(水) 8:47 回答[未読]
【15826】Re:「Excelそのもの」のイベントを検... nowak 04/7/8(木) 0:16 質問[未読]
【15838】Re:「Excelそのもの」のイベントを検... ちゃっぴ 04/7/8(木) 18:20 発言[未読]
【15840】Re:「Excelそのもの」のイベントを検... IROC 04/7/8(木) 18:39 回答[未読]
【15885】Re:「Excelそのもの」のイベントを検... nowak 04/7/10(土) 13:28 お礼[未読]

【15808】「Excelそのもの」のイベントを検出...
質問  nowak  - 04/7/7(水) 0:18 -

引用なし
パスワード
   すみません。質問をさせてください。
Excel2000/2002で、Excel"そのもの"の最小化や非アクティブ化を検出したいのですが、
Workbook_WindowDeactivateや、Workbook_WindowResize(ByVal Wn As Window)では
ブックの最小化などは検出できても、Excelごと最小化された場合などは反応してくれません。

http://www.microsoft.com/japan/msdn/library/ja/vbapb10/html/pbhowApplicationEvents.asp
↑などを参考にApplicationオブジェクトを使うようにしても、
やはりExcelごとリサイズすると検出できないようです。

なぜ、こういうことがやりたいかと言うと、
1.コピーを禁止したいシート上の任意の範囲を選択しコピー(または切り取り)
2.Excelを最小化するなどして、デスクトップ上にスクラップを貼り付け
  または、別のソフトのファイルに貼り付け
という操作を禁止したいのです。
(別のExcelファイルを開く場合はApplicationオブジェクトを使って拾える)

要は、Excelから別のソフトにフォーカスが移った時やExcel自体がリサイズされた時に
クリップボード内のデータが空になってくれれば良いのですが・・・

なにか良い方法があれば、是非、知恵をお貸し願います。

【15811】Re:「Excelそのもの」のイベントを...
回答  IROC  - 04/7/7(水) 8:47 -

引用なし
パスワード
   いっそセルを選択できないようにする方が
簡単な気もしますけど・・

いずれもマクロを無効にされたら意味が無いように思えますが、
制限する意味があるのでしょうか?

【15826】Re:「Excelそのもの」のイベントを...
質問  nowak  - 04/7/8(木) 0:16 -

引用なし
パスワード
   ▼IROC さん:
>いっそセルを選択できないようにする方が
>簡単な気もしますけど・・
>
>いずれもマクロを無効にされたら意味が無いように思えますが、
>制限する意味があるのでしょうか?

いえ、それがあるのです(^^;
Excelで作っているのは、データベースの「クライアント部分」で、
それ単体では何のデータも保持していないのです。
マクロ有効で開くと、サーバからデータが読み込まれるようになっています。
(ついでにマクロ無効だと全てのセルがロックされています)
さらに、マクロ有効時には「保存」ができないようにもしました。
しかし、データが読み込まれた状態で、範囲選択→コピー→他ファイルに貼り付け、
という操作は行えてしまうため、難儀しているわけです。
セルを選択させないという方法では、同一シート上でもコピー&ペーストなどが
出来なくなってしまうため、実際の運用上、問題が大きいのです。

【15838】Re:「Excelそのもの」のイベントを...
発言  ちゃっぴ  - 04/7/8(木) 18:20 -

引用なし
パスワード
   ▼nowak さん:
情報流失を防止したいみたいですが、
これをExcelだけでやることはほぼ不可能です。

仮にコピーを防げたとしてもキャプチャーできますし、
印刷物からデータを取得することもできます。

これら全部を防止するとなると、非常に大変です。
API使いまくってもできるかどうか…

いっそ、自分でExcelライクなアプリを作成したほうが
簡単かもしれません。

結局、オブジェクトアクセスの制限と入退出の管理に
頼らないと効果が薄いと思われます。

【15840】Re:「Excelそのもの」のイベントを...
回答  IROC  - 04/7/8(木) 18:39 -

引用なし
パスワード
   >セルを選択させないという方法では、同一シート上でもコピー&ペーストなどが
>出来なくなってしまうため、実際の運用上、問題が大きいのです。

クリップボードにコピーされると回避できないようなので、
selectioncangeイベントで 通常のコピーを制限して、
「変数を介してコピーするマクロ」を作っては如何でしょうか?
そうすればExcel内でのコピーが可能だと思います。

【15885】Re:「Excelそのもの」のイベントを...
お礼  nowak  - 04/7/10(土) 13:28 -

引用なし
パスワード
   ご回答ありがとうございました。
やはりExcelVBAだけでは難しそうですね。
VBか何かで、クリップボードを監視する常駐アプリか何かを
作って対処する方向で考えてみます。

11477 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free