【问题标题】:Running Excel macro from windows service从 Windows 服务运行 Excel 宏
【发布时间】:2014-07-25 22:28:14
【问题描述】:

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

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

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

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

【问题讨论】:

  • 除非工作簿可见/激活,否则 Excel 是否可能不运行宏?另一种解释可能是由于您打开 Excel 工作表的方式而启用了宏安全性,您是否尝试在用户交互模式(非隐藏)下打开它以查看宏是否运行?
  • 我已将 Excel 设置为启用所有宏,但您可能是对的。你能解释一下如何在用户交互模式下打开它吗?我是新手,所以我不知道该怎么做。
  • 也许这是问题的一部分 - 如果您没有传递任何特殊的命令行参数来隐藏 Excel,那么可能需要用户从 Windows UI 执行它才能在正确的方法。您是否将任何命令行参数传递给 Excel(我假设您正在传递工作簿名称?)。不过,我真的不太了解窗户是如何在表面下工作的
  • 我将 Excel 传递给工作簿的路径。如果我将我的 c# 代码作为 .exe 运行而不是作为服务安装,我可以打开它并运行宏,所以我可以工作。
  • 一定是那样,因为服务的运行方式与常规应用程序不同,我想你的 Excel 没有放在它预期的位置,因此宏会受到影响 - 是您还可以采用其他解决方法吗?流程需要是宏吗?

标签: c# windows excel windows-services


【解决方案1】:

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

  1. 开始 -> dcomcnfg.exe(可能会提示您输入管理员凭据)-> 控制台根目录 -> 组件服务 -> 我的电脑 -> DCOM 配置
  2. 单击“Microsoft Excel 应用程序”。右键单击 -> 属性。
  3. 选择身份选项卡。选择安全选项卡。 确保您的服务登录的用户帐户已添加到此页面上的每个自定义项中。 (警告:即使已经添加了admin组,并且用户帐号是admin组成员,您仍然需要特别添加用户,可能是因为windows UAC的控制。
  4. 选择身份选项卡。选择身份选项卡。 选择“启动用户”。

【讨论】:

    猜你喜欢
    • 2014-05-16
    • 2023-03-30
    • 2013-02-09
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多