从Windows服务运行Excel宏

时间:2014-07-25 22:28:14

标签: c# windows excel windows-services

这与this question有关。请注意,接受的答案不回答提出的问题,因此我创建了一个新问题。

我有一个Windows服务,它将打开一个Excel文档,它有一个宏,它应该在打开时自动运行。我这样做是通过创建一个新的Process。当我运行我的服务时,我将其作为另一个帐户登录(通过服务管理器中的Properties -> Log On -> Log on as [some other account])。

问题是宏没有运行。当我通过任务管理器检查活动进程时,我看到EXCEL.EXE存在,以other account名称运行。

所以我相信该服务正在Excel中正确打开文档,但宏没有运行。但是在另一个帖子中,人们似乎说通过服务打开MS Office文档是不可能的?我试图了解当我的服务尝试打开文档时发生了什么,以及如何让宏运行。任何意见或澄清将不胜感激。

1 个答案:

答案 0 :(得分:0)

我遇到了与您所描述的问题相同的问题,excel实例挂起并且宏无法运行。 我终于发现这是一个权限问题。配置DCOM后,它就可以工作!

  1. 开始-> dcomcnfg.exe(可能会提示您输入管理员凭据)->控制台根目录->组件服务->我的电脑-> DCOM配置
  2. 单击“ Microsoft Excel应用程序”。右键单击->属性。
  3. 选择“身份”标签。选择安全性选项卡。 确保您的服务登录用户帐户已添加到此页面上的每个自定义设置中。 (警告:即使已添加管理员组并且用户帐户是管理员组成员,您可能仍需要特别添加用户,可能是由于Windows UAC的控制。)
  4. 选择“身份”标签。选择“身份”选项卡。 选择“启动用户”。 <-注意必须是这样,如果您选择“交互式用户”并且没有人登录该服务器计算机,则宏将不会运行。