アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルのある特定のBookを閉じれなくする方法を探しています。
分かる方、どうかご教授願います。

ある特定のBookで、毎日必ずスタッフに入力作業をしてもらってます。
Bookは、ある特定の条件が揃うまで閉じる事が出来ないようにしています。

閉じれなくするのは、下記のようなコードを書いてます。
※実際はもう少し応用してますが。

Private Sub Workbook_BeforClose(Cancel As Boolean)
Cancel =True
End Sub

で、シートの上に閉じる用のコマンドボタンを用意して、ある特定の条件が
そろった場合にだけ、コマンドボタンがイキ(Enabled=True)になって、
ボタンが押せて、保存と共にブックを閉じれるようにしています。

これで、大方イメージしている事が出来ているのですが、最近抜け道が横行
している事が判明しました。
つまり、タスクマネージャーからの強制終了です。

で、この強制終了も不可能にする方法はないでしょうか?
何かタスクマネージャーの起動自体を制御する方法もあるみたいですが・・・。
出来ればVBAのコードで出来たら助かります。
たぶん、API?とか言うのを使うのかなって思いますが・・・。
何かPCの設定をする事で出来るかもしれませんが、その設定自体もVBAで
やりたいです。

と言うのは、各スタッフのPCごとに設定してしまったら、いつでもタスク
マネージャーの使用、強制終了が不可能になってしまいます。
やりたいのは、この特定のBookを開いている時だけ、不可能にしたいんです。

だから、Bookを開いた時点でコードを実行して、不可能にする。
閉じる直前にもコードを実行して、それを解除するってのをやりたいんです。

どうかお知恵をおかしください。

A 回答 (4件)

先人の回答者お二人ので終わってしまうかもしれませんが、せっかく考えたのでちょこっと。


何でもプログラム上で解決しようとしてはいませんかね。
運用面(説明をして回るとか)も考えた方が良さそうにも思えます。

何故強制終了がいけないのか <=> したくなるのか
を話し合ってみるのも必要なのでは?

プログラム上での解決を考えてみましたが、
一歩間違えば周囲からは白い目で、システムの管理者からは大目玉を貰うことにもなりかねません。
また単なる思い付きにしか過ぎないので、ユーザーの権限やWinVistaから導入されたUACで拒否されるかも。
A・Book起動時にTaskmgr.exeをリネームして起動不可にする、起動していたら強制終了。
B・Bookの中でTaskmgr.exeの起動を監視し、起動していたら強制終了。
  Bookの処理がギクシャクしそうなので別にVBScriptなどに処理を任せた方が良さそう。

  GetObject("winmgmts:\\.\root\cimv2") _
    .ExecQuery( _
    "Select * from Win32_Process Where Name = 'taskmgr.exe'")

でもね、タスクマネージャからでも終了したいのは、それなりの理由があると思います。
それを聞いて廻るのが良いと思いますよ。
また、
>Bookは、ある特定の条件が揃うまで閉じる事が出来ないようにしています。
条件が揃わなくとも閉じられる方法を再考してみるとかは不可能なんでしょうかね。
そちらの事情が分かりませんので、気に障る言い方でしたらゴメン。
タスクマネージャを潰したらコマンドプロンプトから強制終了・・ともなりかねませんし。
    • good
    • 0

過去に


http://oshiete1.watch.impress.co.jp/qa3673660.html
の質問があって、私がWEB記事を探したものがありました。参考に。
    • good
    • 0

無理だと思いますよ、又教えてくれる人はいないと思います、



タスクマネージャーは、パソコンのシステムで、
エクセルのVBAでパソコンのシステム制御は
パソコンウィルスを作るような物、

下の人が言われるように、電源による強制終了されれば、終わり、
それに、タスクマネージャーで終わった場合、保存が出来ていないでしょ
その人が仕事のやり直ししなければ、ならないだけの事
    • good
    • 0

もし、タスクマネージャーを使用不可にできたとして、次はシャットダウンが抜け道になると思いますよ。

電源ボタン長押しされたら、打つ手は無いのでは?

この回答への補足

もちろんその通りです。
でも、それは少し横においておいてもらって・・・。
とりあえずは、タスクマネージャーを制御出来る方法があるならそれを知りたいです。

まあ、他にもPCでやらなければいけない事もあるので、わざわざPCをシャットダウンしてまで、
再起動すると自分の仕事が遅くなるんで、そこまではしないかと・・・。
だったらやるべき事をやったほうが早いと思うし・・・。

それでもシャットダウンされたら、それはそれで仕方ないって事で。
とりあえずはVBAからタスクマネージャーを制御する方法があれば知りたいです。

補足日時:2011/09/08 15:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!