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年~ 小学校で開始
  • 2021年~ 中学校で開始
  • 2022年~ 高等学校で開始
  • 2024年~ 高校受験科目に新設

学校での必修化に向けて、すでに子ども向けプログラミングスクールが多数開校されています。

あと数年もすれば、あたりまえにプログラミングができる新入社員がやってくる時代になります。

プログラミングってなに?どんなもの?まずは無料体験から試してみませんか?

 

1週間の無料体験あり!
オンラインスクール実績No.1!