1

私の意図したプロセス:

  1. これは、Windows 2008 Server r2 を実行している VM 上にあります。
  2. Windows タスク スケジューラは、スタートアップ マクロを使用して Access データベースを開始します。
  3. VBA スクリプトは、高度にカスタマイズされた電子メールを生成して保存します。

問題:

このスクリプトは、db を手動で開いてスクリプトを実行すると問題なく動作します。しかし、タスクを使用して開始すると、次の 2 行目にエラー 429 'ActiveX コンポーネントはオブジェクトを作成できません' が表示されます。

Dim OlApp As Outlook.Application
Set OlApp = CreateObject("Outlook.Application")

タスク スケジューラによって開始されたときにエラーが発生するのに、手動で実行すると問題なく実行されるのはなぜですか?

タスクについて:

  1. [全般] タブには、次の設定があります
    。私のアカウントの下で
    b。最高の特権を持つ
    c. ログオンしているときだけ
  2. アクション自体は、DB のパスと名前、/x、およびマクロ名をパラメーターとして使用して Access 2010 aka Office14 を開きます。これをバッチファイルとして実行すると、問題はありません。
  3. 私はこの OS や最新のタスク スケジューラについてほとんど何も知りませんが、いつでも学ぶことができます。

アップデート

この件に関するMS サポートの記事を見つけました。CreateObjectこの方法で使用すると、上記のエラー メッセージが表示され、CoCreateInstance失敗することが明確に示されています。ただし、代替手段は提供されません。

何か提案はありますか?

4

4 に答える 4

2

私にとってそれを修正したのは、Outlookを管理者として実行することでした。

于 2013-11-22T12:12:28.160 に答える
1

VBA コードから電子メール メッセージを送信する場合、私は Outlook を自動化するよりも CDO を使用することを常に好んでいました。CDO 経由で電子メール メッセージを送信するサンプル コードについては、こちらを参照してください

于 2013-09-20T21:19:52.793 に答える
1

サービスから Office アプリ (Outlook を含む) を使用することはできません。タスクがデスクトップと対話できる場合でも、セキュリティ コンテキストが異なるため、COM システムでは実行中の COM オブジェクト (Outlook はシングルトン) に接続できません。

Extended MAPI (C++ または Delphi)、CDO 1.21 (非推奨であり、更新もインストールもされていません)、またはRedemption (オブジェクトのRDOファミリを使用) を使用できます。これらはすべて、拡張 MAPI システムをインプロセスでロードします。アウト プロセス COM オブジェクト (outlook.exe によって公開されます)。

于 2013-09-22T21:21:34.760 に答える
0

問題の解決策を見つけました。VBScript インタープリター (cscript.exe/wscript.exe) には、64 ビット バージョンの Windows と 32 ビット バージョンが付属しています。

私がしたことは、Office x86をインストールしてからアンインストールし、タスクスケジューラからx64テスト済みの電子メールをインストールしてから、x86を再インストールしました。インストールとアンインストールのたびに再起動しました。Office の x64 および x86 バージョンをインストールすると、cscript.exe/wscript.exe x86 および x64 の両方のバージョンがインストールされます。最終的に、タスク スケジューラからメールを送信できます (Windows 10 でテスト済み)。

ありがとう

于 2016-06-02T14:24:29.967 に答える