前提・実現したいこと
メール送信処理を記述したAutoExecを設定した
Accessのmdbファイルをbatから起動しさらに、
タスクスケジューラからそのbatを起動することで実行しています。
発生している問題・エラーメッセージ
最近メールの送信処理をcdo.messageから
OutlookObjectLibraryに変更しました。
すると何故かタスクスケジューラから実行した際に
Accessの処理が中断されるようになってしまいました。
エラーメッセージなどが出ないため原因がよくわかりません。
該当のソースコード
・言語 VBA
・ソースコード
以下メール送信処理
Public Function Send_Outlook() As Boolean
Dim objOutlook As Outlook.Application Dim objMail As Outlook.MailItem Set objOutlook = New Outlook.Application Set objMail = objOutlook.CreateItem(olMailItem) Dim strTo As String Dim strTitle As String Dim strBody As String Dim strFiles As String strTo = MailTo strTitle = MailSubject strBody = MailBody strFiles = MailFile With objMail .To = strTo 'メール宛先 .Subject = strTitle 'メール件名 .BodyFormat = olFormatPlain 'メールの形式 .Body = strBody 'メール本文 End With '添付ファイルを添付 'Call objMail.Attachments.Add(strFiles) 'メールを表示 'objMail.Display 'メールを送信 objMail.Send If Err.Number <> 0 Then ErrorMessage = Err.Description 'オブジェクト解放 Set objOutlook = Nothing Set objMail = Nothing Exit Function End If 'オブジェクト解放 Set objOutlook = Nothing Set objMail = Nothing On Error GoTo 0 Send_Outlook = True
End Function
試したこと
mdbファイルを手動で実行すると問題なく実行できます。
batを手動で起動すると問題なく実行できます。
タスクスケジューラのタスクから実行すると処理が止まります。
ldbファイルが作成されているのでmdbファイルを開いていることはわかるのですが
処理が途中で止まっているようです。
モジュールのソースコードにブレークポイントを貼ってみましたが、
batから起動した場合、デバックモードに入らないのかブレークポイントで
止まらないのでどこが原因なのか調べられません。
動きとして明らかに違うのは
手動実行した際はAccsessの画面が表示され処理画面が見えます。
タスクスケジューラーから実行した際は終始バックグラウンドで処理しているようです。
関係ないと思いますがタスクスケジューラのタスク設定は
最上位の特権で実行するようにしています。
またmdbファイルはローカルに配置しており、
Accessのセキュリティセンターの信頼できる場所の設定もしています。
補足情報(FW/ツールのバージョンなど)
実行環境
OS:WindowsServere2019
Office:Office2019
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。