0

SAS データセットを毎日出力する Windows サーバーで自動化されたデータ ジョブを実行しています。これに加えて、Excel のローカル データ プロバイダー経由で接続された Excel レポートがあります。

私の問題は、PC に SAS がインストールされている人がデータ接続を手動で更新する必要があることです。サーバー上のExcelファイルを開き、閉じて保存する前に更新を行ったVBAの一部をトリガーするSASコードを作成しようとしました。サーバーにログインしている場合、これは完全に機能します。しかし、誰もサインインしていないと機能しないようです。これは、アクティブなユーザー セッションがあることと関係があると思います。

アップデート

Excel からローカル データ ソースに接続するために使用するプロセスは、次のようになります。

  1. データ接続ウィザード
  2. OLE DB プロバイダーから SAS Local Data Provider を選択
  3. ルートを SAS データセットにデータ ソースとして追加する
  4. マイ ソース テーブルを選択し、ピボット レポートを作成する

このようなことをする方法はありますか?

4

1 に答える 1

2

Excel を無人で実行したい場合、つまり対話ユーザーがログオンしていない場合は、Windows サービスを使用してこれを行うことができます。Excel の設定を確認する必要があるだけでなく、Excel の起動方法も重要です。

Microsoft はこのようなことをサポートしておらず、推奨もしていないことに注意してください。Excel はクライアント ソフトウェアです。サービスとして実行し続けるのが簡単なソフトウェアとは正反対です。このトピックについては、Office のサーバー側の自動化に関するこの優れた記事の考慮事項をお読みください。少し古い (Office 2003 について話している) 場合でも、最新の状態です。

次の条件を考慮してください。

  • システム アカウントまたはネットワーク アカウントを使用することはできません。少なくとも 1 回 Excel を開始したアカウントで Windows サービスを実行する必要があります。これは、指定されたユーザーでは実行できません (対話ユーザーとして使用できないため)。
  • Excel は、Windows サービス アカウントを持つユーザーで少なくとも 1 回開く必要があります。dcom 設定を構成し、vba を一度開いて初期化する必要があります。また、ほとんどの場合、「vba モデルを信頼する」などの設定をいくつか設定して、プログラムで Excel にアクセスできるようにする必要があります。
  • 最後になりましたが、Excel を起動するときは、ユーザー プロファイルを読み込んで起動する必要があります。c# の Process.Start メソッドは、ブール値を true に設定するだけで、まさにそれを可能にします。

このようにすると、Excel が正常に起動し、VBA とのデータ接続が更新されます。

于 2015-07-03T15:21:58.520 に答える