今回はタスクスケジューラで、設定した日時にExcelを開いてVBAを自動実行する方法をご説明します。
ExcelVBAをタスクスケジューラで実行するには、VBAだけではなく「Bat」と「VBscript」が必要になります。
直接ExcelVBAを実行も可能の様ですが、今回はこの方法でご説明します。
このまどろっこしいやり方を選択する理由としては、他の方法ではタスクスケジューラの設定時に設定が複雑になるからです。
じっくり理解しようとすると少し難しいですが、サンプルコードを少し書き換えるだけで動くようにします。
1.全体のイメージ
タスクスケジューラでBatファイルを実行して、BatファイルでVBSを実行して、VBSでVBAの書かれたExcelファイルを起動させます。
文字だとわかりづらいので、次のようなイメージです。
ExcelファイルにBookOpen時に自動実行されるVBAを記載しておくと、開いただけで自動でVBAが実行されます。
手順も多く、まどろっこしいく面倒そうに感じますよね。
正直面倒ですが、1つひな形を作ってしまえば慣れると5分かからず構築可能です。
2.タスクスケジューラとは
タスクスケジューラとはwindowsOSに標準で搭載されている機能です。
何が出来るかというと、機能名の通り、設定されたタスクを決まったスケジュールやルールで繰り返し自動で実行する事ができる機能です。
設定方法はBatファイル、VBSファイル、ExcelVBAの説明の最後に説明します。
3.BatとVBscriptとは
Batとは
Batファイルとは、windows環境下で動作するバッチ処理を記述するファイルのことです。
コマンドプロンプト上で動作する事は、いろいろな処理を自動実行出来ます。
コマンドプロンプト上で動作するため、画像ファイルなどの操作できません。
コマンドプロンプト?というのはスタートの「ファイル名を指定して実行」に「cmd」と打つと出てくる黒い画面です。
コードを書く場所はエディタ(標準のメモ帳でOK)です。
今回の用途は次に説明するVBscriptを実行するだけですので、深い内容は割愛します。
コピペで実行したいパスのみ書き換えたら使えるサンプルを用意します。
VBscriptとは
VBscriptはVBAのようなプログラミング言語のひとつです。
VBSと省略されて表現されますが、VBAとそっくりです。
それもそのはずVBSはVBA同様に「Microsoft」が開発した言語です。
何が違うのかと言いますと、簡単にいうとVBAは「 Visual Basic for Applications 」の略でExcel、Word、Outlook、PowerPointなどのアプリケーション上で実行できるプログラミング言語です。
VBSはwindowsで動くプログラムを作るプログラミング言語です。
こちらも深い内容は割愛します。
コードはBatファイル同様にエディタ(標準のメモ帳でOK)です。
こちらについてもコピペで実行したいパスのみ書き換えたら使えるサンプルを用意します。
2.BatとVBscriptのサンプルコード
Batサンプルコード
Batはエディタ(メモ帳でもOK)に次のコードをコピーして、「名前を付けて保存」する際に拡張子を「.txt」から「.bat」に書き換えて保存します。
拡張子の選択には「.bat」は出てこないので、手で入力します。
次の1行だけです。
Batファイルはパスの部分は「¥マーク」良く、「””」ダブルクォーテーションでくくる必要ありません。
作成したVBSファイルのパスやファイル名は便宜書き換えてください。
cscript C:\Sample\Sample.vbs
VBscriptサンプルコード
VBSはエディタ(メモ帳でもOK)に次のコードをコピーして、「名前を付けて保存」する際に拡張子を「.txt」から「.vbs」に書き換えて保存します。
こちらも同様に、拡張子の選択に出てこないので、手で入力します。
また、開きたいExcelファイルを指定しなおすには「“C:/Sample/Book1.xlsm”」の部分をフルパスのファイル名で便宜変更してください。
また、パスの「¥」マークはすべて「 / 」で記載してください。
' Excel起動
Set oXlsApp = CreateObject("Excel.Application")
oXlsApp.Application.Visible = true
oXlsApp.Application.Workbooks.Open("C:/Sample/Book1.xlsm")
自動実行するExcelVBAサンプルコード
シンプルに「ThisWorkbook」モジュールに簡単なコードのみ書きます。
Option Explicit
Private Sub Workbook_Open()
MsgBox "実行成功"
End Sub
「 ThisWorkbook」モジュール?? というかたは、次の画面のThisWorkbookをWクリックして、Workbookを選択してください。
自動でOpenが最初に選択されると思いますので、そこに上記コードをコピペしてください。
3.タスクスケジューラの使い方
説明は長いですが、実際には5工程で出来ますので、慣れると全然難しくありません。
タスクスケジューラの画面を開く
スタートメニューの検索で「タスク」と検索すると「タスクスケジューラ」が表示されます。
タスクスケジューラをクリックすると設定画面が開きます。
windowsのバージョンによって開く操作方法が異なるため、「ファイルを指定して実行」で「taskschd.msc /s」を入力すると速いです。
次のような画面が開いたら成功です。
タスクスケジューラの設定方法
タスクスケジューラの画面が開いたら、左側の「タスクスケジューラ ライブラリ」を選択します。
すでにいくつかタスクが登録されていると思いますが、気にしなくて大丈夫です。
新しいタスクの設定方法ですが、右側の「基本タスクの設定」を選択します。
タスク名を付ける
タスク名を付けます。
今回は「SampleAuto」とします。
説明部分は任意で構いません。
名前を付けたら、次へをクリックします。
トリガーの設定
トリガーとは、設定するタスクを実行するタイミングや実行頻度を指定することです。
今回は「毎日」を選択します。
次へをクリックします。
開始日と時間を設定する
次は実行する開始日と時間を設定します。
開始日は設定したい時間が過ぎていなければ本日からでもかまいません。
今回は本日の日付と時間を◯時とします。
次へをクリックします。
操作するタスクの種類を選択
次はタスクスケジューラで操作する種類を選択します。
今回は「Batファイル」を実行するので、「プログラムの開始」を選択します。
次へをクリックします。
プログラムを選択する
最後です。
今回設定する「Batファイル」を参照から選択します。
引数の追加(オプション)と開始(オプション)は指定しなくても大丈夫です。
本来は「PATH環境変数」の設定など、別の設定が必要になります。
実はここのオプションはBatファイルだと省略出来ます。
ほかのファイルだとこの「PATH環境変数」の設定が意外と複雑になります。
そのためBat→VBSと段階を追って自動化しました。
最後に完了して設定は終わりです。
5.タスクスケジューラで自動実行
設定したら、念のため手動で実行してみましょう。
タスクスケジューラ ライブラリを更新すると、先ほど設定した「SampleAuto」が追加されているかと思いますので、右クリックすると実行が選択できます。