11

Excel Interopを使用するコンソールプログラムをC#.NETで開発しました。このプログラムは、コマンドラインから実行した場合、開発マシンとWindowsServer2008で問題なく動作します。

タスクを毎日実行するようにスケジュールしようとすると、この厄介な相互運用エラーが発生しました。

02/11/2011 00:30:05,000 [1] FATAL My.Program [(null)] - Unable to Microsoft Office Excel open file 'E:\excel.xls' by one of several reasons: 

• The file name or path does not exist. 
• The file is being used by another program. 
• The workbook you are trying to save has the same name as the currently opened book. 

System.Runtime.InteropServices.COMException (0x800A03EC): Unable to access the Microsoft Office Excel file 'E:\excel.xls' by one of several reasons: 

• The file name or path does not exist. 
• The file is being used by another program. 
• The workbook you are trying to save has the same name as the currently opened book. 
  in Microsoft.Office.Interop.Excel.Workbooks.Open (String Filename, Object UpdateLinks, Object ReadOnly, Object Format, Object Password, Object WriteResPassword, IgnoreReadOnlyRecommended Object, Object Origin, Object Delimiter, Object Editable, Object Notify, Object Converter, Object AddToMru, Object Local, Object CorruptLoad) 

ファイル'e:\ excel.xls'が存在し、プログラムの開始時に完全に閉じられた場合、コマンドラインで同じプログラムを実行しようとすると、期待どおりに終了したためです。

また、管理者として実行するようにタスクを設定したので、権限の問題ではないはずです。

手伝って頂けますか?

4

6 に答える 6

21

これをチェックしてください。これを正しく機能させるには、フォルダを作成する必要があるようです。

C:\ Windows \ System32 \ config \ systemprofile \ Desktop

この記事から引用

http://social.msdn.microsoft.com/Forums/en/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91

于 2012-04-17T21:47:08.943 に答える
6

つまり、タスクスケジューラで使用されるプロファイルに適切な権限を使用してこれらのフォルダを作成し、そのフォルダが読み取り専用として設定されていないことを確認してください。

C:\ Windows \ System32 \ config \ systemprofile \ Desktop C:\ Windows \ SysWOW64 \ config \ systemprofile \ Desktop

うまくいかない場合は、これを確認してください。

[スタート]メニューから[ファイル名を指定して実行]をクリックし、「Dcomcnfg.exe」と入力します。[コンポーネントサービス]で、[コンソールルート]をクリックし、[コンポーネントサービス]、[コンピューター]、[マイコンピューター]、[DCOMConfig]の順に展開します。MicrosoftWord14.0オブジェクトライブラリなどの関連するアプリを検索します。クリックして。右クリックして[プロパティ]を選択します。[セキュリティ]タブで、[起動とアクティブ化]セクションで[カスタマイズ]を選択します。[編集]をクリックして、アプリケーションが実行されているアプリプールのIDを追加します。「アクセス許可」について上記の手順を繰り返します

于 2016-10-05T10:08:56.637 に答える
2

次の下に「デスクトップ」ディレクトリを作成します。

「C:\ windows \ system32 \ config \ systemprofile\Desktop」</p>

64ビットオペレーティングシステムの場合は「C:\ windows \ SysWow64 \ config \ systemprofile\Desktop」

サービスを実行しているユーザーに、このフォルダーへのフルアクセスを許可します。それはあなたの問題を解決するはずです。

于 2018-10-26T09:40:25.527 に答える
1

スケジュールされたタスクからOfficeAutomationを実行すると、状況が少し奇妙になる可能性があるため、別のユーザーアカウントを試すことをお勧めします。

ログイン時に機能する場合は、アカウントで実行するようにタスクスケジューラを設定することをお勧めします。それでも機能する場合は、アカウントと同じ種類の権限を持つ新しいアカウントを作成し、そのアカウントで実行します。

それ以外の場合は、管理者アカウントとしてログオンし、管理者としてログインしたときにアプリが実行されることを確認してください。たとえば、ユーザーなどによる最初の対話型ログイン中にセットアップされるOfficeが少しあるかもしれません。

于 2011-02-11T21:08:54.143 に答える
1

ファイル'e:\excel.xls'が存在します

そうではありません。E:のようなマップされたドライブ文字はユーザーごとです。ドライブはユーザーアカウントでのみ有効です。スケジュールされたタスクはおそらく別のアカウントを使用して実行されています。アカウントをいじくり回す代わりに、普遍的な名前を使用するのが最善の方法です。のよう\\server\share\excel.xlsに、それはどのアカウントにも有効です。serverfault.comでそれについてもっと質問してください

于 2011-02-11T21:33:00.323 に答える
0

私はこれを機能させるのに苦労していました。私はグーグルのいたるところにいました、私はあなたが「設定」オプションとしてXPを選択することを可能にするスケジュールされたタスクをセットアップする間にドロップダウンを持った1つのスレッドの助けを借りて私の問題を解決したと思いました、XPオプションはただですタスクを最初から作成するときに使用できます。スケジュールされたタスクの所有者が実際にマシンにログインしている限り、これは正常に機能しました。

IDを調整し、ユーザーをパネルにハードコーディングすることで、最終的にDCOM構成で修正することができました。

于 2013-09-23T11:54:36.240 に答える