无法使用Excel Interop安排程序

时间:2011-02-11 20:53:20

标签: c# windows-server-2008 scheduled-tasks excel-interop

我在C#.NET中开发了一个使用Excel Interop的控制台程序。 如果我从命令行运行它,该程序在我的开发机器和Windows Server 2008中运行良好。

当我尝试安排任务每天运行时,我得到了令人讨厌的Interop错误:

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'存在,如果在程序启动时完全关闭,因为如果我尝试在命令行中运行相同的程序,它会按预期结束。

我还设置了以管理员身份运行的任务,因此它不应该是权限问题。

你能帮助我吗?

6 个答案:

答案 0 :(得分:18)

检查一下。看起来你必须创建一个文件夹来使这个东西正常工作。

C:\的Windows \ system32 \设置\ systemprofile \桌面

从这篇文章中摘录

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

答案 1 :(得分:2)

简而言之,请确保使用任务计划程序中使用的配置文件的相应权限创建这些文件夹,这不是只读的:

C:\的Windows \ system32 \设置\ systemprofile \桌面 C:\的Windows \ Syswow64资料\配置\ systemprofile \桌面

并检查一下:

从“开始”菜单中,单击“运行”,然后键入Dcomcnfg.exe。 在“组件服务”中,依次单击“控制台根”,“组件服务”,“计算机”,“我的计算机”,“展开DCOMConfig”。 搜索Microsoft Word 14.0对象库。点击它。 右键单击并选择“属性”。 在安全性选项卡上,选择自定义"启动和激活"部分。 单击编辑并添加运行应用程序的应用程序池的标识。 对"访问权限"

重复上述步骤

答案 2 :(得分:1)

当您从计划任务执行Office Automation时,事情会变得有些奇怪,因此我建议您尝试使用其他用户帐户。

如果您在登录时有效,那么我建议您设置任务计划程序以在您的帐户下运行它。如果仍然有效,请创建一个与您的帐户具有相同权限的新帐户,并让该帐户在该帐户下运行。

否则,请尝试以管理员帐户登录,并确保以管理员身份登录时应用程序运行。例如,可能有一些Office在用户或类似的第一次交互式登录期间得到设置。

答案 3 :(得分:1)

  

文件'e:\ excel.xls'存在

没有。像E:这样的映射驱动器字母是每个用户。该驱动器仅在您的用户帐户下有效,计划任务可能正在使用其他帐户运行。而不是修补帐户,最好的办法是使用通用名称。与\\server\share\excel.xls一样,这对任何帐户都有效。在serverfault.com上提出更多相关问题

答案 4 :(得分:0)

我正努力让这个工作起来。我一直在谷歌,我以为我已经解决了我的问题,一个线程的帮助下降了设置计划任务,允许你选择XP作为“配置为”选项,XP选项只是从一开始创建任务时可用。只要计划任务的所有者实际登录到计算机,这样就可以正常工作。

我终于能够通过调整身份并将用户硬编码到面板来在DCOM配置中纠正它。

答案 5 :(得分:0)

在以下位置创建目录“桌面”

“ C:\ windows \ system32 \ config \ systemprofile \ Desktop”

AND

用于64位操作系统的“ C:\ windows \ SysWow64 \ config \ systemprofile \ Desktop”

授予运行该服务的用户对该文件夹的完全访问权限。 它应该可以解决您的问题。