我有一个自定义应用程序,它使用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的上下文有关。有人可以提出解决方案吗?
答案 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