COM オブジェクトを使用して、NT サービスの Excel スプレッドシートにアクセスします (Windows Scripting Host 経由)。Vista より前のバージョンでは問題なく機能していましたが、Vista 以降では次のエラーが表示されます。
Microsoft Office Excel はファイル 'c:\myfiles\test.xls' にアクセスできません。いくつかの理由が考えられます。
- ファイル名またはパスが存在しません。
- ファイルは別のプログラムによって使用されています。
- 保存しようとしているブックは、現在開いているブックと同じ名前です。
NT サービスのログオン設定を変更して、自分のアカウント、管理者アカウント、およびローカル システムを使用しようとしました。ローカル セキュリティ ポリシーを調べましたが、何も見つかりませんでした。Microsoft KB を検索して何日も費やしましたが、役に立ちませんでした。
コンソール アプリケーションからスクリプトを実行すると、問題なく動作します。ファイルが開き、問題なく処理されます。エラーは、サービスのコンテキスト内から実行された場合にのみ発生します。
サービスが Windows XP または Server 2003 SP1 で実行されている場合も、問題なく動作します。失敗するのは Vista だけです (そして、Server 2003 SP2 で失敗したという報告を受けています)。
価値のあるコードは非常に単純です。
dim xl_app
Set xl_app = CreateObject("Excel.Application")
xl_app.Workbooks.Open mypath,0,1
この人が同じ問題を経験している可能性があると思います: http://bytes.com/forum/thread819740.html