指定した時刻になったらExcelマクロを自動実行したいときはないでしょうか。
そんな時に悩むことは、
・Excelマクロだけで自動実行しようとするとブックを開いている状態にしなければならず不便
・VBScriptで指定した時刻になったらExcelマクロを自動実行する方法がわからない
ですね。
VBScriptとタスクスケジューラを組み合わせると、Excelを閉じた状態でも自動実行が可能になります。
今回はそんなお悩みを解決する
VBScriptで指定した時刻になったらExcelマクロを自動実行する方法
についてまとめます。
もくじ
指定した時刻になったらマクロを自動実行するイメージ
定期的にマクロを実行するイメージについて説明をします。
例えばニュース情報を取得したり、為替レートを取得したり、日報を収集したりいわゆる情報収集系や、それを大本の台帳へ反映させたりする更新系などの作業が考えられます。
システム化されていない場合はこれらの収集作業を手動で行わなければなりませんが、
VBScriptとタスクスケジューラを使いマクロを実行すれば、指定時刻にマクロが自動起動し仕事を片付けてくれます。
また、VBScriptとタスクスケジューラはWindowsの標準機能ですので、追加のインストールやライセンスは不要です。
では早速使ってみましょう。
Windows標準機能「タスクスケジューラ」について
「タスクスケジューラ」は指定したタイミングでプログラムやバッチなどの一連の操作をタスクとして実行するようスケジュールを組む機能です。
この機能を使うと、これまで、Excel上において指定した時刻にマクロを実行するためには、Excelを常時起動していなければならなかったのですが、Excelを閉じている状態でも中にあるマクロを呼び起こし、決めたスケジュールで実行することが可能になります。
「タスクスケジューラ」で起動するマクロを用意する
「タスクスケジューラ」から起動するサンプルのマクロを用意しましょう。
サンプルではWiki情報を収集するマクロとなっています。
VBScriptとタスクスケジューラの設定方法
VBScriptとタスクスケジューラの設定方法について説明をします。
①タスクスケジューラの設定画面を開きます。
タスクスケジューラの設定画面を開くには、スタートメニューの検索窓に「タスクスケジューラ」と入力して出た「タスク スケジューラ」を選択します。
もしくは、コントロールパネルの[管理ツール]>[タスク スケジューラ]を選択します。
②マクロ実行用のタスクを作成します。
左メニューから[タスク スケジューラ ライブラリ]フォルダを選択してから、右側の操作ペインで[基本タスクの作成…]をクリックします。
③タスクの名前を任意の値で入力し「次へ」をクリックします。
④実行スケジュール入力し「次へ」をクリックします。
今回は2019年7月1日の12時から毎日同時刻に開始する内容となります。
⑥実行するプログラムのパス入力し「次へ」をクリックします。
今回は下記記事にて紹介しましたVBScriptファイルを指定しています。
VBScriptファイルの中身です。
Dim objExcel
' Excelのオブジェクトを作成する
Set objExcel = CreateObject("Excel.Application")
'Excelを見える形で表示させる。
objExcel.Application.Visible = true
' Excelブック①のパスとシート名を選択
objExcel.Workbooks.Open("C:\Users\extan\Documents\excel\wiki抽出.xlsm")
objExcel.worksheets("Sheet1").select
'実行するマクロ名を指定。
objExcel.Application.Run "wiki検索と抽出"
Set objExcel = Nothing
⑦入力した内容を確認し「完了」をクリックしたら設定完了です。
完了後は真ん中のペインに設定したタスクが表示されます。
タスクを実行する
設定したタスクは設定したスケジュールで実行されますが、その前にきちんと稼働するか手動で実行してみます。
真ん中に表示されている設定したタスク名を右クリックし「実行する」をクリックします。
はい、Excelが起動されました。
マクロが実行されるとB列に値が入ります。
↓
しばらくすると・・・
↓
Wiki情報を収集した結果がB列に反映されましたね!
マクロが実行されたことがわかりますね!
あとは開始タイミングを待つだけです。
さいごに
いかがでしょうか。
今回は
VBScriptで指定した時刻になったらExcelマクロを自動実行する方法
についてまとめました。
タスクスケジューラとVbscriptと組み合わせればExcelのマクロの定期実行ができることがわかりましたね。
安定的に自動化するためには、警告メッセージを出ないようにしたり、バックグラウンド実行にしたりもう少し工夫が必要となりますので、まずは検証頂ければと思います。
今後もいろいろな使い方をご紹介していきたいと思いますのでご期待ください。
【Outlook VBA】指定時間にメールを自動送信する方法!タスクスケジューラや予定表から実行!
コメントを残す