Windows 2008 Serverでタスクスケジューラを使用して実行している小さな.NETアプリケーションがあります。このアプリケーションでは、Excelファイルを開いてから、csvとして保存する必要があります。ワークブックを開くときにタスクが失敗します。タスクスケジューラを実行せずに手動で実行すると、アプリは正常に動作します。"デスクトップとの対話"を使用してスケジューラからWindows 2008タスクを実行する方法
「最高の特権で実行する」に設定し、「天気予報ユーザーがログオンしているかどうか」をチェックしました。
私の推測では、このプロセスはデスクトップ上で「デスクトップとの対話」フラグをサービスと同様に操作する必要があります。しかし、私は予定された仕事のために同様のものを見つけることができませんでした。ここで
が失敗しているコードです。(それはworkbook.open呼び出しに失敗した)
public static void ConvertExcelToCsv(string source, string destination)
{
if (File.Exists(destination)) File.Delete(destination);
Application xl = new Application();
try
{
Workbook workbook = xl.Workbooks.Open(source, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
Worksheet ws = (Worksheet)workbook.Sheets[1];
ws.SaveAs(destination, XlFileFormat.xlCSV, Type.Missing, Type.Missing, false, false, Type.Missing, Type.Missing, Type.Missing,true);
Marshal.ReleaseComObject(ws);
}
finally
{
xl.DisplayAlerts = false;
xl.Quit();
Marshal.ReleaseComObject(xl);
}
}
これは機能します!それは狂っている、私はあなたに感謝したことは決して見つけられませんでした。上記のリンクも正しくありません。http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef – Kelly
サーバー上のOfficeオートメーションを動かすユーザーアカウントのUACを無効にする必要があります。これが私の最終的な失敗でした。 –
私は私のために働いていないソリューションに従った。私は私のために働いた 'Microsoft Excel Application'のdcom IDにいくつかの変更を加えました。アイデンティティを「このユーザー」に変更し、管理者アカウントの資格情報を提供しました。これは私のためにうまくいき、Sharepoint Webpartはそれがすべき方法で動作するようになった。 –