【发布时间】:2014-06-11 00:20:19
【问题描述】:
我有一个自定义应用程序,它使用 Microsoft.Office.Interop.Excel.Application 打开和保存 Excel 文件。我有一批使用所有必需参数触发应用程序。该批处理在手动运行时成功完成了任务,但是当我尝试在任务调度程序中安排相同的任务时,我从 ma 应用程序中记录了以下错误消息:
Microsoft Office Excel 无法访问该文件 'E:\tasks\extractSPdocs\downloads\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 的上下文有关。有人可以提出解决方案吗?
【问题讨论】:
-
E: 是映射驱动器吗?
-
不,afaik 这是 SAN,但作为本地驱动器连接...即“net use”不显示任何映射的驱动器。
标签: excel batch-file windows-server-2008 scheduled-tasks