決まった時間に実行することが決まっているVBAの完全自動化を目指す
今回はタスクスケジューラを用いて定期的にVBAを自動実行する方法についてご紹介します。
最初だけ設定・準備が少し面倒ですが、これを設定しておくことで面倒な操作を完全自動化することができるようになります。
ダブルクリックだけでVBAは実行できるので特に時短にならないのでは?と思う方もいるかと思いますが、このタスクスケジューラを用いての自動実行については完全自動化による「作業忘れの防止」と「頻回の操作」を目的としています。
例えば私が実際に使っているものとしては「1週間に1回あるサービスの利用状況を集計してメールで報告する」や「同僚のスケジュールを毎日全員に送信する」というような処理が完全に自動化されます。
処理にかかる時間がVBAを手動で実行したとして1週間に1回10分・毎日1回5分であったとしても、他にやらなければならないことがあったりするとつい忘れることもあると思います。
またこの小さな作業が積み重なるとそこそこ時間がとられることになります。
完全自動化することにより、まず作業忘れを完全になくすことが可能です。
さらに作業時間が0なので「毎日1時間おきに作業する」や、「1か月のうち1日だけの作業」などもあらかじめ登録しておけば手間も負担も全くありません。
以上のことから手作業でVBAを実行する自動化のレベルとは明らかに1ランク上の自動化が可能になります。
タスクスケジューラについて
タスクスケジューラはWindowsに標準の機能で、実行するための条件(トリガー)と実行内容(操作)を設定しておくことで、条件を満たした場合に特定の操作を行うことが可能です。
主にアプリケーションのアップデートの確認などに使用することが多いようですが、我々もこの機能を活用して自動処理の仕組みを作ることが可能です。
実行内容はBatファイルを開くという操作を指定しておくのが最も手間がかからないらしく、VBAを実行するためにはBatファイルとVBSファイルを用意して順に実行するというフローを使うことが多いようです。(詳細の手順は後で示します。)
スポンサーリンク
タスクスケジューラでVBAを実行する手順の概要
タスクスケジューラでVBAを実行する方法としては①VBSファイルのみを使用する方法と②VBSファイルとBatファイルを使用する方法の2通りがあります。
私は汎用性と利便性を考慮して①VBSファイルのみを使用する方法をよく使っていますのでこちらを紹介します。
タスクスケジューラでVBAを実行する手順
(1)実行したいVBAコードを記載したファイル
(2)VBAを実行するためのVBSファイル
(3)VBAを描いたファイル・VBSファイルを同じフォルダに格納する
①タスクスケジューラでVBSファイルを起動
②VBSファイルでVBAを実行する
タスクスケジューラでVBSファイルを起動→VBSでVBAが実行されるというフローになります。
前回VBSを用いてVBAをダブルクリックで実行する方法をご紹介しましたが、VBSを用いてダブルクリックする方法は単体ではそこまで便利ではなく、今回ご紹介するタスクスケジューラを用いた自動実行と組み合わせて初めて本領を発揮します。
タスクスケジューラでVBAを実行する設定方法
1.VBSファイルの作成
先ほど概要をご説明した通り、VBAのコードを書いたファイルのほか、VBSファイルを作成してVBS起動→VBA実行のフローを構築します。
また、VBSの中でこの格納したフォルダのパスを取得しておくことで使いまわす際に便利なようにしています。
VBSファイルはテキストエディタなどでコードを書いた後、拡張子をそれぞれ「.vbs」に変更すればOKです。
今回例として下記の2つのファイルを作成して、デスクトップの「タスクスケジューラ」というフォルダに格納しています。
Dim ExApp:Set ExApp = CreateObject("Excel.Application")
Dim FSO:Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WSH:Set WSH = CreateObject("Wscript.Shell")
'格納されているフォルダのパスを取得(ExcelVBAで言うところのThisWorkbook.Pathみたいなもの)
Dim objPath:objPath = FSO.GetParentFolderName(WScript.ScriptFullName)
ExApp.visible = true
WScript.Sleep 3000
'ファイル開く
ExApp.Workbooks.open objPath & "\" & "02_タスクスケジューラでVBA実行.xlsm"
'マクロ実行
ExApp.Application.Run "メッセージ表示"
'ファイルを閉じる
WScript.Sleep 3000
ExApp.Quit
set ExApp = Nothing
set objPath = Nothing
set WSH = Nothing
set FSO = Nothing
Sub メッセージ表示()
MsgBox "実行しました"
End Sub
VBSファイルをダブルクリックした場合にExcelファイルが起動し、マクロが実行できればOKです。
今回の場合メッセージボックスが表示されるのでOKをクリックすると作業が次に進み、ファイルが閉じる仕様となります。
2.タスクスケジューラの設定
上記3つのファイルが作成できて、手動できちんと動作することが確認できたらタスクスケジューラでBatファイルを起動する準備をしていきます。
今回は1時間に1回毎日実行するように設定してみます。
設定項目の左側を毎日に指定、詳細設定の繰り返し間隔を1時間に設定してOKをクリックします。
プログラム/スクリプトの欄に作成したVBSファイルのフルパスを入力します。
「参照」ボタンをクリックしてファイルを選択すれば入力されます。
また、開始(オプション)に格納されているフォルダのパスを入力します。
詳しくは私も把握していませんが、これを忘れると起動しないので、忘れずに入力するようにしましょう。
右の実行ボタンをクリックしてきちんと起動すれば決まったタイミングから自動実行が開始されます。
これらのファイルは一回作っておくとあとはコピペをベースに少し設定を変更すればすぐに使えるようになるので、慣れてくると簡単に作れるようになります。
最初の設定だけ少し面倒ですが、そのあと勝手に仕事が進むので私はかなり重宝しています。
また便利な使い方など思いついたらアップするようにします。













コメント