タスクスケジューラで、5分間隔でPowerShellからExcelを起動する。
タスクスケジューラから起動したマクロBOOKは動くのか?
定期的に処理したものがある場合、Windowsであれば「タスクスケジューラ」に登録して時間を設定しておけば処理されます。今回の主眼は、2点。
1 タスクスケジューラから起動したExcelのWorkbook.Openイベントは対応するか。
2 スケジューラに5分間隔で実行する設定はできるのか。
結論から言うとできました。
以下、設定要領をまとめます。
目次
1 閲覧対象者
2 得られる効果
3 タスクスケジューラを設定する手順
1 閲覧対象者
タスクスケジューラって何なの?という初心者の人。
2 得られる効果
タスクスケジューラの設定の仕方がわかる。
3 タスクスケジューラを設定する手順
環境
OS:Windows10
Excel2019
PowerShell ver:5.1.18362.752
手順1 Excelを開くPowerShellを作る。
PowerShellの拡張子は「.ps1」です。
メモ帳に記述し、拡張子を変更します。
$excel = New-Object -ComObject Excel.Application $excel.Visible = $true # 画面上に表示する $excel.DisplayAlerts = $flase # 警告メッセージは表示しない # 現在のディレクトリの絶対パスを取得 $currentPath = (Convert-Path .) # 対象の Excel ファイル名 $filename = 'PowerShell_Open.xlsm' $book = $excel.Workbooks.Open($currentPath + "/" + $filename) # 上書き保存 $book.Save() # ブックを閉じる $excel.Workbooks.Close() $excel.Quit() # 後処理 [System.Runtime.Interopservices.Marshal]::ReleaseComObject($book) [System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel)
手順2 Workbook.Openイベントを記述した「マクロ有効BOOK」を準備する。
ここでは、開いたらA1セルを+1するものを作りました。
手順3 タスクスケジューラに登録する。(1~12)
1 タスクスケジューラを開く。
2 タスクスケジューラライブラリをクリック。
3 基本のタスクの作成をクリックする。
4 基本タスクの作成ウィザードが開くので、「名前」「説明」を記入する。
5 トリガーを毎日にする。
6 「開始」「間隔」を設定する。(後で再設定するので、ここは適当でいいです。)
7 「操作」をプログラムの開始時にする。
8 1:%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe
2:-Command "実行するps1のフルパス"
3:実行するps1が入っているパス(””でくくらない)
9 完了をクリック
10 タスクが作成された。
11 処理時間を設定する。タスクを右クリックし、プロパティをクリック。トリガーを編集する。(8時に起動、5分おきに処理する。)
12 トリガー編集後のタスクの表示
以上で終了です。
5分おきにps1が実行され、A1セルを+1していきます。
この処理意味はないので、+1を必要な処理に変更すればOKです。