質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

1回答

3508閲覧

タスクスケジューラーからのAccessのAutoExecの実行に失敗します

hummer0125

総合スコア0

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/08/13 09:42

前提・実現したいこと

メール送信処理を記述した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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

とりあえずヒントだけです。
ブレークポイントは、Acess自体を閉じるとクリアされるので、
代わりにStopステートメントを入れておいてはいかがでしょうか?

投稿2021/08/31 07:02

hex309

総合スコア761

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問