今回はタスクスケジューラからエクセルマクロを実行する方法を解説します。毎日同じ時間にデータをダウンロードする事になっていて、毎日同じデータの加工処理を施していると言う事は良くあります。そんな時、毎日同じ時刻に勝手にマクロが起動してくれたら便利ですよね。サクッと要点を解説しちゃいます。
目次
マクロブックを作る
ある時間になったら自動で実行するマクロを作成します。エクセルマクロブックをまず作ってどこかに保存しましょう。
イベントプロシジャを作成する
ワークブックにチェック機能をつけるで解説したイベントプロシジャを使います。タスクスケジューラからエクセルマクロブックないに記述されたプロシジャを直接実行することはできないため、ブックを開いたら実行するイベントプロシジャを使います。
標準モジュールを作成する
標準モジュールに、ある時刻になったら実行したいプロシジャを作成します。イベントプロシジャに長々とプロシジャを記述するわけではありません。
'これは標準モジュールに記述する Sub 定時刻に行う作業() 'ここに、メインの作業を記述する MsgBox Time & "に作業が完了しました。" End Sub
ブックが開くと言うイベントが起きたときのイベントプロシジャを記述する
ブックが開いたときに行うプロシジャを記述します。先述のように、ここはメインのプロシジャを呼び出すだけです。ブックのイベントなのでブックモジュールに記述します。
プロジェクトエクスプローラ内に存在する、ThisWorkbookをダブルクリックする。
ここに先ほどのプロシジャを呼び出すコードを書きます。
'これは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をつけてできあがりです。
引数の追加(オプション)にエクセルブックのフルパスを入れる
フルパスの意味はOKですね。今度は引数の所に先ほど自分で作ったエクセルマクロブックのフルパスを入力します。気をつけるべきはこの引数の所はフルパスを「”」と「”」で囲むことです。
まず、エクセルというアプリを開いて、そのエクセルアプリでどのブックを開く、と指定するんですね。
これで準備完了です。直近の時間を設定して動作が実行されるか確かめてみましょう。
<関連記事>
<お知らせ>
Excel VBAでクラスやオブジェクトの概念と使い方を丁寧に解説し、ワンランク上の実力を目指すガイドを書きました。この本で本物の実力を身に付けて一皮むけてみませんか?
books.rakuten.co.jp