从任务计划程序运行时,为什么Excel无法打开文件?


14

我编写了一个PowerShell脚本,该脚本可打开excel工作簿并运行宏。当我从PS控制台运行该脚本,甚至使用powershell.exe script.ps1从命令行运行该脚本时,它都可以正常工作。当我从Windows任务计划程序设置任务时,它将引发有关该Excel文件的异常,说该文件不存在或已在使用中。

该文件肯定存在,因为脚本可以从命令行正常运行,我很肯定它没有被使用。

我试图将Excel文件移动到本地非特权区域,以避免网络信任/管理员特权问题。该任务仍以最高特权运行。路径中没有空格或特殊字符。

当我尝试使用文件系统对象访问文件时,即使从调度程序运行也没有错误,所以我猜它特定于Excel.Application.Workbooks.Open("..")方法。

我现在应该考虑什么?


1
使用哪个用户帐户运行预定任务?
Massimo 2013年

我使用了域管理员帐户,这似乎是问题所在。使用域管理员组工作正常。但是我现在必须找出为什么DCOM访问授权域管理员帐户有问题。
zrz

TL;博士:eric的答案中的解决方法是有效的,但不受支持 -请参阅此Microsoft支持文章。最好寻找替代方法,例如DocumentFormat.OpenXml nuget包
mklement0

Answers:


8

可能是DCOM权限问题。自动化Excel有时充满危险...

我发现诸如此类的问题的唯一方法是将Excel设置为通过DCOM权限以特定用户身份运行。

  1. 打开组件服务(开始->运行,输入dcomcnfg)
  2. 深入到“组件服务”->“计算机”->“我的电脑”,然后单击“ DCOM Config”
  3. 右键单击“ Microsoft Excel应用程序”,然后选择“属性”。
  4. 在“身份”选项卡中,选择“此用户”,然后输入交互式用户帐户(域或本地)的ID和密码,然后单击“确定”。

不幸的是,即使将任务设置为在具有对计算机的管理员访问权限的帐户下运行,将其保留为交互式用户或启动也无法与任务计划程序一起使用。


1
感谢您指出dcomcnfg。我必须将Excel应用程序手动添加到注册表中,才能将其查看到dcomcnfg中,然后我尝试更改身份设置,但它也不起作用。从dcomcnfg中,我研究了访问授权:域管理员在列表中,并且具有本地和远程访问权限,但是其图标上有一个红色的小标志(红色磁盘中的白叉)。我不知道为什么,但是域管理员帐户不知何故存在问题。解决方案是添加域管理员组帐户并从该组运行任务。
zrz

Microsoft不支持在非交互式会话中运行Office COM组件-请参阅support.microsoft.com/en-us/help/257757/…eric的答案是当前有效的解决方法,但不受支持。
mklement0

可以通过涵盖在DCOM Config中完全缺少Microsoft Excel应用程序条目时如何添加这些条目来改进此答案。请参阅docs.microsoft.com/en-us/archive/blogs/…另外,FWIW,这不能解决我的问题。Excel进程仍出现在任务管理器中,但是指定的文件永远不会打开/运行。
TylerH

同样,进行此更改后,它完全阻止了我运行甚至打开Excel VBA文件/ VBA编辑器,从而在每次尝试时都导致CTD。
TylerH

42

创建这两个文件夹:

32位:

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

64位:

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

如果不是交互式运行,则Excel需要这些文件夹。即使您使用的是64位操作系统,也要创建两个文件夹。


3
我只是想补充一点,Microsoft不认可非交互运行任何Office组件,但是在许多情况下都可以解决。
flindeberg 2014年

8
这是一些严重的黑魔法。我不知道什么更可怕-在这种情况下Excel需要此文件夹,或者有人知道在这种情况下Excel需要此文件夹。
Rich C

1
要强调@flindeberg的观点:此替代方法有效,但不受支持 -请参阅此Microsoft支持文章
mklement0

从system32 / SysWOW64一直到我的帐户,一直创建这些文件夹并为我的帐户(也是运行计划任务的帐户)分配“完全控制”权限,对我来说仍然无效。
TylerH

2

设置DCOM权限时,如果没有在dcomcnfg尝试中显示Microsoft Excelmmc comexp.msc /32

参考


这导致DCOM Config为我打开,并问我是否要注册几个条目,但Excel不在其中。
TylerH
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.