
タスクスケジューラから
・マクロ(VBA)を自動実行
できます!

バッチファイルやVBScriptファイルが無くとも
マクロ(VBA)を自動実行できます!
※他のサイトでは必要である旨が記載されていますが、無くてもできます。

マクロの自動実行は
・VBAコード(実行させたい処理)
・VBAコード(Openイベント)
・タスクスケジューラでExcelファイルを開く
で実現できます!
※バッチファイルやVBScriptファイルは不要です。

自動実行させた後の
・Excelファイルの閉じ方がポイント
です!
※中途半端にExcelが起動した状態にならないように工夫が必要です。
VBAコード(実行させたい処理)
実行させたい処理のマクロ(VBA)を作成します。
こでは例として、
・デスクトップ配下のExcelファイル「sampl_001.xlsm」に
・プロシージャ「sample()」を作成
します。

Sub sample()
'メッセージ出力
MsgBox ("sampl_001.xlsmのマクロを実行しました!")
End Sub

VBAコード(Openイベント)
実行させたい処理のマクロ(VBA)を呼び出します。
「ThisWorkbookモジュール」に「Workbook_Open」サブプロシージャを記述します。
Private Sub Workbook_Open()
Dim isBookOpen As Boolean
'実行させたい処理を呼び出す
Call sample
'他に開いているブックがあるかどうかを確認
isBookOpen = False
For Each wb In Workbooks
If wb.Name <> ThisWorkbook.Name Then
isBookOpen = True
Exit For
End If
Next
'他に開いているブックがあるかどうかで分岐
If isBookOpen Then
'Excelファイルを保存せずに閉じる
ThisWorkbook.Close SaveChanges:=False
Else
'Excelを終了する
Application.Quit
End If
End Sub
タスクスケジューラでExcelファイルを開く
上記でマクロ(VBA)を作成したExcelファイルを自動で開くように、タスクスケジューラを設定します。
検索窓に「タスクスケジューラ」と入力し、表示された「タスクスケジューラ」をクリックする。

左側にある「タスク スケジューラ ライブラリ」をクリックして選択状態にする。

右側にある「新しいフォルダー」をクリックし、任意の名前でフォルダを作成する。
※ここでは例として「VBA」フォルダを作成します。


作成したフォルダをクリックし選択状態にして、右側にある「タスクの作成」をクリックする。


「名前」に任意の名前を入力する。
※ここでは例として「TaskVBA」とします。

「トリガー」タブの「新規作成」をクリックする。

マクロを自動実行させるタイミングを設定して「OK」をクリックする。
※ここでは例として「2021/11/03の12時に起動」するように設定します。

「操作」タブの「新規作成」をクリックする。

●「プログラム/スクリプト」にExcelの実行ファイルである「EXCEL.EXE」のフルパスを記述する。
※ここでは「“C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE“」を記述します。
※パスに半角スペースが含まれるため、前後に「“」を記述します。
●「引数の追加(オプション)」に「上記で作成したExcelファイル」のフルパスを記述する。
※ここでは上記で作成した「C:\Users\user\Desktop\sampl_001.xlsm」を記述します。
●「OK」をクリックする。

実行結果
タスクスケジューラの設定が上手くできているかを確認するため、設定したトリガーを手動で実行します。
タスクスケジューラの右側にある「実行」をクリックする。

上記を実施すると
・「VBAコード(実行させたい処理)」が
・自動実行されることを確認
できます。

参考①
上記のVBAコードを修正する際は、Openイベントが発生しない方法でExcelファイルを開いてください。
※上記に記載の「Workbook_Open」サブプロシージャには、Excelファイルを閉じる処理も記載しています。
※よって普通に開くと処理完了後に自動で閉じてしまいます。
※自動で閉じてしまうため、普通に開くとVBAコードの修正ができません。
詳細は以下の記事をご確認ください。
参考②
タスクスケジューラからExcel(VBA)を実行できない時は、以下の記事の対応をしてみてください。
参考③
タスクスケジューラに設定されているタスクの一覧を取得できます。
詳細は以下の記事をご確認ください。
参考④
上記のVBAコードで使用した以下の詳細は、以下の記事をご確認ください。
●Openイベント
参考⑤
上記のVBAコードで使用した以下の詳細は、公式サイトをご確認ください。
●「Workbookオブジェクト」の「Close」メソッド
●「Applicationオブジェクト」の「Workbooks」プロパティ
●「Applicationオブジェクト」の「Quit」メソッド