VBA

【ExcelVBA】指定日時以外は開けないブック ~残業させないぞ②~

上司
上司
もりさん、聞いておくれ。

例の部下の残業時間が以前より増えているんだ。いったいどうなってるんだね?

もり
もり
ええ?定時外は実行できないマクロを作ったのに・・・

ちょっと本人に事情を聞いてみますね。

前回のあらすじ

とある会社に「残業したい部下」がいた。困り果てた上司が、この部下をなんとか定時で帰らせようと「もり」に相談を持ちかける。

【ExcelVBA】指定日時以外の実行を禁止するマクロ ~残業させないぞ①~

もりが「定時外は実行できないマクロ」を作るも、逆効果。

残業したい部下
残業したい部下
ふーん、マクロが動かないなら手作業でやればいいな

おっ、ますます残業代稼げちゃうぞ(ぐふふ)

もり
もり
コラーっ!早く帰りなさーい!

もり、再発防止策を考えます

上司
上司
おい、もりさん。マクロが使えなくても、ブックが開けたら意味ないだろ。

ちゃんと対策をしておくれ

もり
もり
たしかに・・・そうですね(ん?なんで私が怒られるパターン?)

定時外はブックを開けないようにしちゃうわよ!

イベントプロシージャWorkbook_Openを使う!

Workbook_Openとは、ブックが開かれた時に自動で起動するイベントプロシージャです。

標準モジュールではなく、「ThisWorkbook」に記述します。

イベントプロシージャはThisWorkBookに記述する

ブックを開くと、マクロが実行されてmsgboxが登場します。

もり
もり
このイベントプロシージャを利用するよ!

Workbook_Openでブックを閉じる!

イベントプロシージャWorkbook_Openはブックが開かれた時に起動します。

そこで、「Workbook_Openプロシージャ」に「ブックを閉じる処理」を記述します。

ユーザがブックを開く
→Workbook_Openが起動する
→Workbook_Openに記述されている処理によって、ブックが閉じられる

もり
もり
自分で書いてて思うだけど、こんなマクロ作って誰得なんだろうね?

ThisWorkbook.Closeでブックを閉じる

※このコードを書いてブックを保存&閉じてしまうと、二度とそのブックを開けなくなるのでご注意ください。

動作がこちら!

残業したい部下
残業したい部下
むむっ・・・開けないぞ

Application.QuitでExcelを終了する

Excelアプリケーションを強制終了する方法もあります。

※このコードを書いてブックを保存&閉じてしまうと、二度とそのブックを開けなくなるのでご注意ください。

動作がこちら!

残業したい部下
残業したい部下
なんだこれは!むごいな

指定の日時以外はブックを開けないようにするマクロ

イベントプロシージャWorkbook_Openに「指定時間外の場合はブックを閉じる処理」を記述すればOKですね!

これで、定時外にブックを開いても、自動で閉じてしまうマクロの完成です!

メッセージダイアログ右上の×印で閉じても、同様にブックが閉じられてしまいます。

残業したい部下、あきらめない

残業したい部下
残業したい部下
おい、こんなマクロ作って、おまえ暇なのか?

その腕、もっと世間様の役に立つ仕事に使ったらどうだ?

もり
もり
あんたを帰らせるために作ってるんでしょーが!!(怒)

 

この部下、まだ何か考えているようです。

 

残業したい部下
残業したい部下
そうか。「定時後だと開けない」ということは、

「定時になる前に」ブックを開いておけばいいんだな!

もり
もり
コラーっ!早く帰りなさーい!

 

(次回へ続く)

2020年・小学校でプログラミング教育が必修化

2020年、いよいよ小学校でプログラミング授業が始まります。続く2021年からは「中学校」で開始。2022年からは「高校」でも導入されます。

あと何年かしたら、あたりまえにプログラミングを使いこなす新入社員が入ってくるかもしれません。2020年、大人も一緒に学んでみませんか?

1週間のオンライン無料体験
いつでもどこでも今すぐ視聴OK