タイトル : Re^7: WIN2012サーバー+タスクスケジューラーで、EXCELの実行 投稿日 : 2020/03/11(Wed) 19:39 投稿者 : 魔界の仮面弁士
>> 64bit 版 Office - C:\Windows\System32\config\systemprofile\Desktop >> 32bit 版 Office - C:\Windows\SysWOW64\config\systemprofile\Desktop > 「Desktop」フォルダーを単純に作って実行してみましたが、結果は同じでした。 当方では試していないのですが、Web で検索した限りでは、 上記フォルダーで解決したという報告が多かったのですが…駄目でしたか。 フォルダー作成後は、念のために再起動を行っておいてください。 それから、フォルダーの作成は「管理者コマンドプロンプト」から行ってください。 このフォルダーは管理者に対してはフルコントロール権限がありますが、 一般ユーザー権限だと閲覧すらできないようになっているためです。 (エクスプローラーからだと追加のアクセス権の割当を要求されてしまうはず) このフォルダーのアクセス権を cacls コマンドで確認すると、 恐らく下記 2 件の ACL 情報が列挙されると思います。 NT AUTHORITY\SYSTEM:(OI)(CI)F BUILTIN\Administrators:(OI)(CI)F あとは権限繋がりで、レジストリ関係ぐらいしか思い当たらないです。 スケジュール起動の場合とデスクトップ起動の場合とで、 レジストリ アクセスやファイル アクセスの I/O 動作に違いが無いか、 Process Monitor で追跡できないでしょうか。 > ちなみにですが、VB.NETのプログラムはもちろんですがEXCEL自体も、 > 対話形式で何かを聞いてくるようにはなっておりません。 Hongliang さんが提示してくださった URL にも書かれていますが、 Office は対話型インターフェイスを前提として設計されています。 Excel の Interactive プロパティや DisplayAlerts プロパティを False にすることで、ある程度は自動応答な動作にすることができますが、 それによって対話型インターフェイスを完全に抑制できるわけではありません。 ちなみにかつての VB6 においては、App.UnattendedApp プロパティというものがあり、 コンパイルオプション「対話型インターフェイスの抑制」のチェックボックスから、 対話モードの有無を設定できるようになっていました。 残念ながら VB.NET や Excel には同等機能がありません。 VB6 で UnattendedApp = True の場合、MsgBox を呼び出したとしても、 メッセージ応答のためにプログラムが中断することはありません。 また、プログラムで捕らえていない実行時エラーが発生した時にも ダイアログの類は一切表示されず、メッセージ内容はイベントログに 自動記録されるような仕掛けになっていました。 |