从任务计划程序启动时,应用程序将引发错误

时间:2014-04-25 10:29:11

标签: excel batch-file windows-server-2008 scheduled-tasks

我有一个自定义应用程序,它使用Microsoft.Office.Interop.Excel.Application打开并保存excel文件。我有一个批处理,用所有必需的参数激活应用程序。该批处理在手动运行时成功完成任务,但当我尝试在任务计划程序中安排相同时,我从ma app中记录了以下错误消息:

  

Microsoft Office Excel无法访问该文件   'E:\工作\ extractSPdocs \下载\ Last_Minute_IT_DATA_DUMP_201404250000.xls'。   有几个可能的原因:

     

文件名或路径不存在。该文件正在使用   另一个程序。您尝试保存的工作簿具有相同的功能   将其命名为当前打开的工作簿。

我知道从以下代码部分抛出了错误:

 try
                        {
                            excelfile = new Microsoft.Office.Interop.Excel.Application();
                            excelfile.DisplayAlerts = false;
                            var wb = excelfile.Workbooks.Open(dirpath + "\\" + csvname);
                            wb.SaveAs(dirpath + "\\" + csvname.Substring(0, csvname.LastIndexOf('.')), Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook);
                            csvname = csvname.Substring(0, csvname.LastIndexOf('.')) + ".xlsx";
                            csvext = ".xlsx";
                        }

使用我正在使用的相同帐户(本地管理员)创建任务。 它设置为以最高权限运行并从批处理文件目录开始。 操作系统是Windows Server 2008。

我不知道为什么会失败,但怀疑这与调度程序启动我的应用程序然后启动Excel的上下文有关。有人可以提出解决方案吗?

3 个答案:

答案 0 :(得分:1)

我在这里找到了一个解决方案http://justgeeks.blogspot.co.uk/2012/10/troubleshooting-microsoft-excel-cannot.html

诀窍是你必须抓住这个文件夹:

  

<强> C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面

我必须承认,我不太明白为什么excel在任务调度程序启动时打开文件需要这个文件夹,但是它有效。

答案 1 :(得分:1)

实际上我没有尝试@Maju的答案,但是this Superuser question有一个对我有用的解决方案:你必须配置DCOM。我设置标识以将Excel运行到我在任务计划程序中使用的标识。

https://superuser.com/questions/579900/why-cant-excel-open-a-file-when-run-from-task-scheduler

答案 2 :(得分:0)

我添加了以下目录c:\ windows \ syswow64 \ config \ systemprofile \ desktop