11

我在 C# .NET 中开发了一个使用 Excel 互操作的控制台程序。如果我从命令行运行,该程序在我的开发机器和 windows server 2008 上运行良好。

当我尝试安排一个任务每天运行它时,我得到了这个烦人的互操作错误:

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

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

你能帮助我吗?

4

6 回答 6

21

看一下这个。看起来你必须创建一个文件夹才能让这个东西正常工作。

C:\Windows\System32\config\systemprofile\Desktop

取自这里的这篇文章

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

于 2012-04-17T21:47:08.943 回答
6

简而言之,请确保为任务计划程序中使用的配置文件创建具有适当权限的这些文件夹,并且该文件夹未设置为只读:

C:\Windows\System32\config\systemprofile\Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop

如果不起作用,请检查:

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

于 2016-10-05T10:08:56.637 回答
2

在下面创建一个目录“Desktop”:

“C:\windows\system32\config\systemprofile\Desktop”</p>

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

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

于 2018-10-26T09:40:25.527 回答
1

当您从计划任务执行 Office 自动化时,事情可能会变得有点奇怪,因此我建议您尝试使用不同的用户帐户。

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

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

于 2011-02-11T21:08:54.143 回答
1

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

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

于 2011-02-11T21:33:00.323 回答
0

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

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

于 2013-09-23T11:54:36.240 回答