【发布时间】: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