Mutable_Yunの業務改善ブログ

VBA勉強中の非エンジニア会社員向けのブログです。業務改善についても触れています。

5分でわかるタスクスケジューラでVBAマクロを実行する方法

今回はタスクスケジューラからエクセルマクロを実行する方法を解説します。毎日同じ時間にデータをダウンロードする事になっていて、毎日同じデータの加工処理を施していると言う事は良くあります。そんな時、毎日同じ時刻に勝手にマクロが起動してくれたら便利ですよね。サクッと要点を解説しちゃいます。

目次

マクロブックを作る

ある時間になったら自動で実行するマクロを作成します。エクセルマクロブックをまず作ってどこかに保存しましょう。

イベントプロシジャを作成する

ワークブックにチェック機能をつけるで解説したイベントプロシジャを使います。タスクスケジューラからエクセルマクロブックないに記述されたプロシジャを直接実行することはできないため、ブックを開いたら実行するイベントプロシジャを使います。

標準モジュールを作成する

標準モジュールに、ある時刻になったら実行したいプロシジャを作成します。イベントプロシジャに長々とプロシジャを記述するわけではありません。

'これは標準モジュールに記述する
Sub 定時刻に行う作業()

    'ここに、メインの作業を記述する
    MsgBox Time & "に作業が完了しました。"
    
End Sub
ブックが開くと言うイベントが起きたときのイベントプロシジャを記述する

ブックが開いたときに行うプロシジャを記述します。先述のように、ここはメインのプロシジャを呼び出すだけです。ブックのイベントなのでブックモジュールに記述します。


プロジェクトエクスプローラ内に存在する、ThisWorkbookをダブルクリックする。
f:id:mutable_yun:20191113190023p:plain

Workbook Openイベントを設定したところ
プルダウンからWorkbookとOpenを選択すると自動で、プロシジャ名が入力される

ここに先ほどのプロシジャを呼び出すコードを書きます。

'これはWorkbookモジュールに記述する
Private Sub Workbook_Open()

    Call 定時刻に行う作業
    
End Sub

これでタスクスケジューラから開きたいエクセルマクロブックが完成しました。

タスクスケジューラからエクセルを開く

それではタスクスケジューラの設定をしていきましょう。左下にいるコルタナさんにお願いして、タスクスケジューラを開いてもらいます。

タスクスケジューラを開く

タスクスケジューラを検索している絵
タスクスケジューラを選択して開く

タスクスケジューラの設定を行う

タスクスケジューラの設定を行うには、右の方にある「操作」ウィンドウの「基本タスクの生成」の設定をダブルクリックします。

タスク名をつける

次に、基本タスク作成ウィザードが生成されるので、適切な名前をつけて「次へ」を押します。

基本タスクの作成ウィザード
基本タスクの作成ウィザード

タスクを開始するタイミングを選択する

実行する間隔を選択して「次へ」。今回は、毎日同じ時刻に起動する場合を想定して「毎日」を選択します。

実行する間隔を指定する画面
実行する間隔を指定する

開始する日時を指定する

次にマクロを起動したいタイミングを設定します。

次回実行するタイミングを設定する画面
次回実行するタイミングを設定する

注意点として、この時の初回実行タイミングの設定が過去になっていると一度も実行されませんので気をつけて下さい。

タスクで操作する実行内容は「プログラムの開始」

タスクでどの操作を実行しますか?については既定のまま「プログラムの開始」を選択して、「次へ」を押します。ちなみにこの「プログラム」とはエクセルアプリケーションのことです。エクセルブックなどを司る大本のプログラムです。私たちが作ったマクロのことではありません。

タスクで実行する操作を選択する画面
タスクで実行する操作を選択する

プログラムの開始

山場です。頑張りましょう。下のような画面になっていると思います。

プログラムの開始の設定画面
プログラムの開始の設定

今回設定する必要があるのは、上の二つです。

  • プログラム/スクリプト
  • 引数の追加(オプション)

順に説明します。

プログラム/スクリプトにEXCEL.EXEのフルパスを指定する

一番上の、プログラム/スクリプトにはEXCEL.EXEのフルパスを指定します。フルパスとはそのファイルが保存されているフォルダの名前に\ファイル名をつけたモノです\と「¥」は同じです。

私の実行環境ではEXCEL.EXEのフルパスは、C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE でした。この設定は人によって異なる為、分からなければProgram FilesまたはProgram Files(x86)で右上にある検索窓にEXCEL.EXEを入力して検索してみましょう。必ず見つかります。

検索画面にEXCEL.EXEを入力して検索した結果の画面
検索画面にEXCEL.EXEを入力して検索した結果

見つかったらEXCEL.EXEの上で右クリックして、「ファイルの場所を開く」を押せば保存場所を開くことができます。

EXCEL.EXEファイルが保存されているところを探す画面
EXCEL.EXEファイルが保存されているところを探す

うえのフォルダのパスが記入されているところをクリックしてコピーして、貼り付けます。

フォルダのパスをコピペ
フォルダのパスをコピペ

最後に\EXCEL.EXEをつけてできあがりです。

引数の追加(オプション)にエクセルブックのフルパスを入れる

フルパスの意味はOKですね。今度は引数の所に先ほど自分で作ったエクセルマクロブックのフルパスを入力します。気をつけるべきはこの引数の所はフルパスを「”」と「”」で囲むことです。

まず、エクセルというアプリを開いて、そのエクセルアプリでどのブックを開く、と指定するんですね。

これで準備完了です。直近の時間を設定して動作が実行されるか確かめてみましょう。