自动化 Excel 的 Windows 服务

3

我有一个Windows服务,运行Excel Interop以自动执行各种宏。然而,当我尝试运行一个使用Windows身份验证访问数据库的宏时,遇到了一个奇怪的问题...

如果通过Windows服务运行宏,则工作簿会打开并启动宏执行,但应用程序会挂起(可能在数据访问部分)。

但是,如果通过Visual Studio调试器运行宏,使用与服务相同的实现(它们调用相同的类库),则它会执行,保存工作簿,并按预期关闭。

我确定这与模拟有关,但我似乎无法弄清楚。我已经将Windows服务运行在我的用户下,并且还修改了组件服务中的默认COM属性,以将其从默认的Identify更改为Impersonate

如果能够作为Windows服务而不是控制台应用程序运行,则将非常感激任何帮助。


3
是的,从Windows服务中使用Office可能会比较棘手。请参考此链接以获取更多信息:http://support.microsoft.com/kb/257757/en-us 。 - CoreTech
1个回答

5
也许我有点晚了,但我还是要介入一下:
我遇到了类似的问题,并通过在以下两个路径中创建“Desktop”文件夹解决了它:C:\Windows\SysWOW64\config\systemprofile和C:\Windows\System32\config\systemprofile。
看起来Excel无法在windows服务中使用特定用户运行。因此,它会以LocalSystem服务帐户运行,并且需要Desktop文件夹才能与Excel交互。
我没有更深入的解释,但这对我很有用,也没有引起其他已知问题。我搜索了很多关于最终答案的信息,但我找到的所有内容都只描述了解决方法而没有指定原因。

1
是的,那已经设置好了。我必须这样做才能让它正常工作。我遇到的问题是特定于在宏中使用受信任连接查询数据库时出现的。不过还是谢谢你。 - shuniar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接