【タスクスケジューラ】エクセルマクロ実行方法
なめこ太郎です。
タスクスケジューラでエクセルマクロを動かす方法をご紹介します。
それでは、本題に入ります。
4つのファイルを用意
タスクスケジューラでエクセルマクロを動作させるためには、4つのファイルが必要です。
📒今回の実験例
.xlsファイル→.pdfファイルに変換してみる
ファイル名も分かりやすく『PDF変換』と付けています。
(このあたりは好きに変更してくださいね)
✓PDF変換元ファイル.xls
✓PDF変換.bat
✓PDF変換マクロ実行プログラム.vbs
✓PDF変換.xls
流れを簡単に説明します。
①タスクスケジューラで.batファイルが指定した時間に作動
↓
②.batファイルがエクセルマクロを作動
↓
③エクセルマクロがPDF変換を実行
うーん、よく分かりませんね(爆)
必要なファイルについては、下記にくわしく書きます。
①PDF変換元ファイル.xls
PDFファイルへ変換する元ファイルを作成しておきます。
繰り返しになりますが、今回は例として『PDF変換元ファイル.xls』の拡張子を『PDF変換元ファイル.pdf』へ変換します。
※今回の実験のためだけに必要なファイルです。
②PDF変換.xls
マクロを搭載したエクセルファイルを作成しておきます。
エクセルファイル内にバッチファイルで動かしたいマクロを作成します。
✓PDF変換マクロ
Sub PDF変換マクロ()
'アラートオフ
Application.DisplayAlerts = False
'拡張子を『xls』→『pdf』へ変換
Workbooks.Open filename:="任意のパス名\PDF変換元ファイル.xls"
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, filename:= _
"任意のパス名\PDF変換元ファイル.pdf"
'アラートオン
Application.DisplayAlerts = True
'エクセル終了
Application.Quit
End Sub
任意のパス名には、さきほど作成した『PDF変換元ファイル.xls』があるパス名を入力してください。
③PDF変換マクロ実行プログラム.vbs
エクセルマクロを動かすプログラムを作成しておきます。
メモ帳に下記を貼り付けして、拡張子を『.vbs』に変更します。
決り文句です。
Dim obj
Set obj=WScript.CreateObject("Excel.Application")
obj.Visible=False
obj.Workbooks.Open WScript.Arguments(0)
obj.Application.Run WScript.Arguments(1)
④PDF変換.bat
タスクスケジューラに登録するバッチファイルを作成しておきます。
メモ帳に下記を貼り付けして、拡張子を『.bat』に変更します。
@echo off
setlocal enabledelayedexpansion
cscript 任意のパス名①\PDF変換マクロ実行プログラム.vbs 任意のパス名②\PDF変換.xls PDF変換マクロ
【⚠注意点】
任意のパス名を指定してください。
①『PDF変換マクロ実行プログラム.vbs』を置いているパス名
②『PDF変換.xls』を置いているパス名
タスクスケジューラにバッチファイルを登録
①[Windows+Rキー]taskschd.mscと入力
②基本タスクの作成
③タスク名の入力
④タスクトリガーの設定
⑤開始・間隔の設定
⑥操作方法の設定
⑦プログラムの選択
⑧完了
まとめ
💡ポイント
タスクスケジューラ×エクセルマクロで無限大
タスクスケジューラとエクセルマクロを組み合わせることで、『可能性は無限大』です。
今回の例では、単純に『xls』→『pdf』に変換しました。
応用するとPDF化したファイルをメール添付して、指定した時間にメール自動送信することも可能です。
エクセルマクロでメール自動送信する方法については下記の記事を参考にしてください。以上です。
※本記事の内容で実行された結果について、筆者は一切の責任を負いませんので、ご了承ください。必ず自己責任で実行してください。