見出し画像

Windows定期実行:タスクスケジューラ Python & VBA

1.概要

スクリプトファイルPythonファイルで作成したコードなどを定期実行したい時には下記があります。

●Windowsユーザー:タスクスケジューラ
●Macユーザー:カレンダー
●クラウドを使用:Github action、HEROKU

今回はWindowsでの定期実行方法タスクスケジューラを紹介します。

2.タスクスケジューラの使用方法

2-1.タスクスケジューラアプリの起動

Windowsの検索ボックスに"タスクスケジューラ"と入れてアプリを選択。

画像1

2-2.基本タスクの作成

操作タブ->基本タスクの作成->必要情報入力

画像2
画像3

2-3.処理期間を設定

タスクトリガーで期間設定(下記は毎週月曜日の7:00に処理)

画像4
画像5

2-4.操作・プログラムを指定(Python)

Pythonファイルを定期実行する場合”プログラムの開始”を選択

画像6

次にPythonファイルの場所を指定する。説明用は下記の通りです。
※おそらく”開始(オプション)”は何も記載せず、”引数の追加(オプション)”にpythonファイルの絶対パスを記載してもOKのはずです。

画像7

実際に書き込むと下記の通り。条件は下記の通り。

●nameのところは各自のユーザー名が記載されています。
●私はAnacondaを使用しているためPython.exeはAnacondaフォルダの中にあります。
●自分のDesktopにScriptという名前のフォルダをつくりpractice.pyというファイルを作成しました。

画像8

最後に入力を確認して完了を押すと完成です。

画像9

2-5.テスト実行

手動で実行して動作確認も可能です。先ほど作成したタスクの上で右クリックして”実行する”を選択すれば動作確認可能です。

画像10

3.VBAスクリプト(Excelマクロ)の定期実行

 Excelのマクロを定期実行する場合はスケジューラ以外にVBSファイルを作成する必要があります。

3-1.Excelマクロの用意

 まず自分が使用したいマクロを用意します。(下記は適当なマクロ)

[note用マクロ.xlsm] 
Sub Testmessage()

    Dim fso As FileSystemObject
    Set fso = New FileSystemObject
    
    filepath = ThisWorkbook.Path & "\" & ThisWorkbook.Name
    MsgBox ThisWorkbook.Path & "\" & fso.GetBaseName(filepath)
    
End Sub

3-2.VBSファイルの作成

 タスクスケジューラではExcelファイルを直接処理せずVBSファイルを経由して処理します。VBSファイルは下記の通りです

●Const WB_PATH = マクロを記載したファイルパス
●Const PROC_NAME = マクロで作成したプロシージャの名前

[VBSファイル]
Const WB_PATH = "C:\Users\ユーザー名\Desktop\note用マクロ.xlsm"
Const PROC_NAME = "Testmessage"
Dim excelApp
Set excelApp = CreateObject("Excel.Application")

With excelApp
	.Visible = False
	Dim wb
	Set wb = .Workbooks.Open(WB_PATH)
	.Run wb.Name & "!" & PROC_NAME
	.DisplayAlerts = False
	wb.Save
	wb.Close
End With

excelApp.Quit

 なお私はメモ帳でVBSファイルを作成しましたが文字コードがUTF-8のままだと日本語が文字化けしてエラーが発生するためANSIに変えました。

3-3.VBSファイルの手動チェック

 VBAファイルをダブルクリックしてマクロ実行出来ることを確認します。

 なお実行できない場合は「プログラムから開く」で「Microsoft®Windows Based Script Host」を選択して実行します。

3-4 タスクスケジューラの指定

 2-4.以外はすべて同じですが、ファイル選定方法だけ特殊になります。ポイントは2点です。

●プログラム/スクリプト:"C:\Windows\System32\wscript.exe" を指定
●引数の追加(オプション):VBSファイルのパスを指定
※Excelのパスは一切指定しない(VBS側に指定しているため)

 以上でPythonスクリプトと同様にExcelマクロも定期実行可能です。


4.別添 エラー対応

4-1.VBSで実行時のExcelファイル名

 VBS実行時に下記のようなエラーが発生しました。

 原因はExcelファイル名であり特定の文字が使えませんでした
 ググって「"を3つで括る」や「ショートパス使用」など出てきましたがどれも解決には至らなかったためあきらめてファイル名を修正しました。

OK:note用マクロ.xlsm
OK:note用_マクロ.xlsm
NG:note用 マクロ.xlsm 'スペース(全角も半角もダメ)
NG:note用(マクロ).xlsm '括弧など

参考資料

あとがき

 マクロの定期実行が結構手間でほしい情報がまとまってなかったため自分で作成しました。

いいなと思ったら応援しよう!