人事の職種柄、申請書をエクセルで作成すること多いです。
(まだシステム化してないんですかー?という声も聞こえますが…)
紙じゃないだけマシですよね…?
そんなエクセル申請書にも課題があります。それは、入力の不備が多い。。
こんな不備を未然に防ぎたいということで、申請書を開いたタイミングでや閉じたタイミングでエラーチェックができないか?と考えました。
今日はそんな処理の備忘です。
また、ファイルを開いたときにプログラムを実行できるのであれば、定期的に時間を設定して、データ成型するような仕組みも作ってみました。
その際に考えた、「自動実行させる仕組み」をご紹介します。
目次
ファイルを開いたときに処理をさせる実例
以下の例では、ファイルを開いたと同時にメッセージボックスを表示させています。
このように、ファイルを開いたときにあるプログラムを動かす。といった内容になります。
イベントプロシージャを利用する
いきなり超重要です!ファイルを開いたときに処理をさせたり、ファイルを閉じるとき、保存するときなどに処理を走らせるには、イベントプロシージャを用います。
イベントとは、ユーザが行う何らかの操作のことで、イベントプロシージャとは、ユーザが操作を行った時に実行されるプログラムのことです。
よく使うイベントは以下ですが、ほんとに様々なものがあります。
- BeforeClose → ブックが閉じられる前
- Open → ブックを開くとき
- Select → オブジェクトを選択したとき
このほかにも、「NewSheet」といった新しいシートを追加したとき、といった面白いイベントもあります。
今回は、開くときにメッセージを表示させたいので、Workbook_Open をプロジェクトエクスプローラーのThisworkbookに追加します。
実際のコードは以下です。ただ、メッセージボックスを表示するだけなので、特に意味はありません。笑
Private Sub Workbook_open() MsgBox "ファイルを開いたよ" End Sub
とってもシンプルな例ですが、試してみると、エクセルが動いてるーーって感じがしてなんだかテンション上がりますよ。笑
エクセルファイルを定時に自動で起動する方法
起動したときに自動でプログラムを実行するコードをエクセルファイルに仕込めば、定期的にVBAで作ったプログラムを実行させることが可能です。
この仕組みを実現するためには、Windowsの標準機能のタスクスケジューラを利用します。(つまり、以下の方法はWindowsでの実装方法です)
1.タスクスケジューラを起動する
スタートメニューにて「タスク」と入力します。
タスク スケジューラのアイコンをクリックし、タスクスケジューラを起動します。
2.タスクを作成する
「タスク スケジューラライブラリ」で右クリックし、「タスクの作成」をクリックします。
3.「全般」タブでタスク名を入力する
まず、タスク名を入力します。タスク名が未入力だと、タスクを作成できません。
ここでは Excel実行 と入力しました。
4.「操作」タブでエクセルファイルを起動する操作を設定する
起動したタスクの作成画面にて、操作タブから新規ボタンをクリックします。
ここでは、操作=エクセルファイルの起動 の設定をします。
操作の編集 画面にて、任意のエクセルを起動する設定をしましょう。
1:プログラム/スクリプト の項目で、EXCEL.EXE(プログラムファイル)を指定
2:引数の追加 の項目で、起動したいエクセルファイルを指定
上記二項目共にフルパスを入力しましょう。
2:の起動したいファイルパスはいいとして、EXCEL.EXE(プログラムファイル)とはなんでしょうか?
これは、Excelの実行ファイルで、このファイルを起動すると、ブランクのエクセルが開きます。
イメージは1:でブランクのエクセルを起動し、その上に2:起動したいファイルが乗っかる感じです。(分かりづらくなったかも笑)
1:のファイルが格納されている場所は各PCで異なる可能性があり、プログラムファイルが入っている私のフォルダのパスを掲載します。
C:\Program Files (x86)\Microsoft Office\root\Office16
このフォルダ内に EXCEL.EXE が格納されています。
このファイルパスを1:に入力しましょう。
上記1:2:の設定が終わったらOKをクリックします。
5.「トリガー」タブで自動実行したい日時を指定する
さいごに、実行したい日時を設定しましょう。
前提として、PCが動いている時間内に実行する必要がありますので、その点注意ください。
この設定は結構種類があって、実際に画面をみて試してもらった方が良いかもしれません。
毎日・毎週・毎月などがベースになります。わたしは「毎日」(時間は18時)で設定してみました。
スケジュールを設定して、OKをクリックしましょう。
6.タスク名と実行スケジュールを確認する
すべて設定が完了したら、タスクスケジューラライブラリに設定内容が表示されます。
この設定では毎日18時にエクセルファイルを起動するという設定ができたことになります。
さいごに
非常にシンプルですが、こういったものをサラッと使えるとすごいかっこよくないですか?笑
私が見たことあるもので、、設計書をエクセルで作っている場合、設計書に目次があることが多々あるのですが、ファイルを開いたときに必ず目次が開くようなプログラムを入れていたことがありましたが、親切だなあと思いました。こういうの、サラッと作りたいなあ。。
会社ではエクセルの申請書を使うことも多くなってきましたが、閉じるときにエラーチェックさせるというのが割とスタンダードになってきています。
ぜひ、こういった部分も改善していきましょう!
今回紹介したスケジューラ設定を組み合わせて自動実行できるような仕組みを作って、色々な改善が提案できると思います。
ぜひ使ってみてください。
では、また。
[…] ファイルを起動したタイミングでVBAマクロを実行する方法はこちらの記事に掲載しておりますので、詳細はご確認くださいませ。 […]