[[20260810222638]] 『タスクスケジューラからbatファイル経由でのVBA実』(Asa) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『タスクスケジューラからbatファイル経由でのVBA実行時のエラー』(Asa)

 お世話になっております。

 当方、現職を退職するにあたり、これまでは私のPCから手動実行していたVBA群を
 部署の共有のPCに移行する作業をしております。

 1. batファイルをタスクスケジューラが呼び出し、xlsmファイルを開く
 2. Openイベントでバッチ処理に発火
 3. BLAN内に存在するテキストファイルにETLを施し
 4. 実行PCのローカルフォルダにあるaccdbへ保存
 5. PQで接続しているxlsx群にRefreshをかけ
 6. 静的xlsxとして出力
 7. Exlsxファイル群をOutlookからメール送信
 というプロセスです。

 別途clsLoggerとしてログ記述を行っておりますが、7. の部分で下記エラーをキャッチしました。
 ・ファイル C:\Users\user\Documents\Outlook ファイル\Outlook.pst を開けません。
 手動実行時にこのエラーは再現せず、
 スケジューラからの実行でも再現するケースとしないケースがあります。

 エラーが発生している原因、またその対処法についてご教示いただけませんでしょうか。

 ※上記プロセスは夜間に行われており、退職日が近づいていることもあり検証が追いついておらず
 皆様の知恵をお貸しいただけると幸いです。

< 使用 Excel:Microsoft365、使用 OS:Windows11 >


 ※文字化けにより関係のないリテラルが残存していますがスルーしていただけると幸いです
(Asa) 2026/08/10(月) 22:49:03

 手動実行時とは.batによる起動ですか。
 実行PCは 起動していますか。(ログインかつ非スリープ)
 .batの起動オプションで管理権限つけてますか。

 単純に考えて権限付与の問題じゃないかと思いますが、
 win10当たりのアップデートでcmdの権限制限が強くなった気がした気がします。
  管理者権限オプションで実行するとユーザー承認を求めてくるアプリがあったりとか

 outlookの起動以外は問題がないようでしたら
 web版outlookのAPI使ってsそっちから送信するっていうのはどうでしょうか。 

 もしくはイベントロガーのログで詳細確認したらわかるかもしれません。
 https://pentan.net/taskscheduler-rireki-on/
(ちくわ) 2026/08/11(火) 02:50:45

 ちくわ様
 ご回答ありがとうございます。

 手動実行時は、batファイルの手動実行です。
 権限のオプションは付けておりませんが、batファイルの責務は
 実行フラグ用の一時ファイル作成と、xlsmファイルを開くことのみに留めています。

 また、タスクスケジューラ側では「ユーザーがログオンしているかに関わらず実行する」としており
 スリープは設定からオフにしています。

 bat側にVBA側のエラーを返したり処理結果を待つ構成にはしていないので、
 上記二つの処理を実行した時点で「タスクは正常に実行された」となります。

 Web API経由試してみます。ありがとうございます。
(Asa) 2026/08/11(火) 16:57:48

 実行PCの状態については、正直に申し上げますと把握しきれていません。
 「ログオフせずに退勤してください」とは部署内で共有しておりますが、なにぶん複数の人間が触るので
 夜間バッチ処理時に「ログオン状態である」かどうかは担保できておりません。

 そのためタスクスケジューラ側で「ログオンしているかに関わらず」としていますが
 逆にこちらの設定が悪さをしている可能性もありそうですね。。。
(Asa) 2026/08/11(火) 17:07:30

 WEB版outlookのAPIでやっていいなら
 どちらにしろ対策できない奴もあるので原因を特定する必要はないですが。

 イベントロガーじゃなくてイベントビューアーでした。 
 イベントビューアー > windowsログ > application
  に警告出てませんか。 
 "ソース" が"ファイル" にアクセスしようとしましたが イベントID が発生しました
 みたいな

 ※エラー発生させてテストしたわけではないので想像で書いてます。
 ソースにolk.exe → 新版outlookが呼び出しされているので .pstを指定しても読み込めない
 ソースにoutlook.exe → 「アクセスが拒否されました。」の場合は権限不足か2重起動でのファイルロックの可能性

 clsloggerが標準コンポーネントをラップしたものとすると

 .pstが開けないエラーがでるのは
ログオフが原因と考えると
  .pst呼び出し時に(権限が他のバックグラウンドアプリと同格になるので)
     他のソフト(バックアップ、スキャン)が,pstをロックしている、
     フォルダへのアクセス権限不足
  CreateObject("Outlook.Applicatin")とかはwindowsの標準機能で起動するので
  初期設定が反映されて(new)を呼び出されている可能性がある。
   (new)が呼び出されている場合は
     .pstを指定して呼び出そうとしている → .pstを受け付けてないので拒否される
     新版はCOM受け付けないのでそのエラー → エラー表示が .pstが開けないになる可能性もありそう。

 ログイン状態でもエラーがでるなら2重起動も原因かなって思いますけど。
(ちくわ) 2026/08/12(水) 11:08:48

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.