1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

マクロの自動実行処理

Last updated at Posted at 2022-03-09

バッチファイルでマクロを実行する(Outlook)

VBAを用いた自動化、業務効率化シーリズのOutlook版です。
バッチファイルをタスクスケジューラで起動し、マクロを自動実行させる


バッチファイルの作成


  1. バッチファイルの作成
    ファイル名は任意で命名し拡張子を.batで保存

  2. 下記のコードを記述し、上書き保存しファイルを閉じる
    ※下記バッチ処理は、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でパスワード入力後、エラー発生。


やったこと


【エラーに関する情報】

image.png


管理者権限でタイムスケジューラ起動し設定

image.png

エラー情報が変りました。

"バッチジョブとしてログオン"の権利が必要

参考記事
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 権限に変更することで、タイムスケジューラからバッチファイル実行ができました。

以下参考

  1. 実行権限の付与
    実行権限を付与するは、管理者権限でも変更不可(ロックされていた)

  2. レジストポリシーの変更
    リスクがあると判断したため、試しておりません。
    (制御に関する設定なようなので、変更する場合はIT部門に相談が必要と思いました。)


動作確認


上記の1(実行権限)で設定を終え、Outlook、タイムスケジューラを閉じた状態で、設定時刻まで待機。

無事Outlookが起動し、マクロも実行されたことが確認できました。

※このバッチ処理は、Outlookが起動 > マクロの実行なのでOutlook起動した状態ですと
重複してOutlookが起動され、マクロは実行されなかった。

例)スリープモードで帰宅し朝出社したら既にOutlookが起動しマクロも実行されている。
出社時にPCの電源を入れログインし、設定時刻なったら実行される


Outlook起動している状態でのマクロ実行


予定表のアラームをトリガーとして、マクロを実行する(アラームが発生したらマクロが実行される)

※予定表の追加など操作方法などはご自身で調べてください。

  1. 予定表にマクロを実行したい時間、期間などを設定する。

  2. 開発タブからVBEを起動する

  3. Microsoft Outlook Objects 直下にある "ThisOutlookSession" をW Clickする

  4. 下記コードをコピペし編集してください。

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の設定に関する点に置きましては、自己責任でお願いします。

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?