バッチファイルでマクロを実行する(Outlook)
VBAを用いた自動化、業務効率化シーリズのOutlook版です。
バッチファイルをタスクスケジューラで起動し、マクロを自動実行させる
バッチファイルの作成
-
バッチファイルの作成
ファイル名は任意で命名し拡張子を.batで保存 -
下記のコードを記述し、上書き保存しファイルを閉じる
※下記バッチ処理は、Outlookを起動し、マクロが動作している時間(SleepTime)を90sec入れて
処理が終わったらoutlookを終了する流れです
(使用になるマクロにより処理時間は変わると思うのでSleepTimeは調整が必要)
start outlook.exe /autorun <マクロ名>
timeout /nobreak 90
taskkill /F /IM OUTLOOK.EXE
作成したバッチファイルをタスクスケジューラで実行する
Outlookを起動していなくても、処理を実行する
【つまずいた事】
タスクスケジューラの登録を行ったところ、セキュリティの関係のエラーが発生。
(実行権限の変更により解決)
参考記事の紹介
【ユーザガイド】(学習向け)
https://www.qualeed.com/ja/qbackup/userguide/scheduling/
【bat自動実行のタイムスケジューラ設定】
https://qiita.com/Richard_Roe/items/44e16841f16ee40c6113
上記記事(bat自動実行のタイムスケジューラ設定)の2-5でパスワード入力後、エラー発生。
やったこと
【エラーに関する情報】
管理者権限でタイムスケジューラ起動し設定
エラー情報が変りました。
"バッチジョブとしてログオン"の権利が必要
参考記事
https://se-abeaver.com/logon-as-a-batchjob/
【試したこと】
下記記事の「 3. タスクスケジューラをSYSTEM権限で起動する方法 」の1-3を実行。
https://datyotosanpo.blog.fc2.com/blog-entry-159.html
下記記事の 「 1. 実行権限の変更 」
https://se-abeaver.com/logon-as-a-batchjob/
SYSTEM 権限に変更することで、タイムスケジューラからバッチファイル実行ができました。
以下参考
-
実行権限の付与
実行権限を付与するは、管理者権限でも変更不可(ロックされていた) -
レジストポリシーの変更
リスクがあると判断したため、試しておりません。
(制御に関する設定なようなので、変更する場合はIT部門に相談が必要と思いました。)
動作確認
上記の1(実行権限)で設定を終え、Outlook、タイムスケジューラを閉じた状態で、設定時刻まで待機。
無事Outlookが起動し、マクロも実行されたことが確認できました。
※このバッチ処理は、Outlookが起動 > マクロの実行なのでOutlook起動した状態ですと
重複してOutlookが起動され、マクロは実行されなかった。
例)スリープモードで帰宅し朝出社したら既にOutlookが起動しマクロも実行されている。
出社時にPCの電源を入れログインし、設定時刻なったら実行される
Outlook起動している状態でのマクロ実行
予定表のアラームをトリガーとして、マクロを実行する(アラームが発生したらマクロが実行される)
※予定表の追加など操作方法などはご自身で調べてください。
-
予定表にマクロを実行したい時間、期間などを設定する。
-
開発タブからVBEを起動する
-
Microsoft Outlook Objects 直下にある "ThisOutlookSession" をW Clickする
-
下記コードをコピペし編集してください。
Private Sub Application_Reminder(ByVal objItem As Object)
'マクロの自動実行プロシージャ
Dim strItemSubject As String
'予定アイテムの件名を指定します。
strItemSubject = "<予定アイテム>"
'新しい予定を表す AppointmentItem オブジェクト(26)を指定
If objItem.Subject = strItemSubject And objItem.Class = "26" Then
'マクロの呼び出し
Call <マクロ名>
End If
End Sub
※strItemSubject = "<予定アイテム>" (設定した予定アイテム名を入力する)
※Call <マクロ名> (マクロ名を入力)
olAppointment 26 AppointmentItem オブジェクト
【補足】
以上、上記の流れでOutlookマクロの自動化を実装することができました。
この記事を読んで気付き指摘事項などありましたら、ご教授頂けると助かります。
PCの設定に関する点に置きましては、自己責任でお願いします。