【问题标题】:Word Interop Not Working In A Scheduled TaskWord 互操作在计划任务中不起作用
【发布时间】:2010-11-13 18:14:35
【问题描述】:

我目前正在开发一个脚本,它获取一个 Word 文档,在 Word 中打开它,然后将 Word 文件打印为 PDF。在我的机器或服务器上手动运行时,一切都很好。当我尝试将其作为计划任务运行时,问题就出现了。

其中一项要求是,这应该在没有任何干预的情况下每晚完成。当我设置计划任务来执行此操作并将安全选项设置为“仅在用户登录时运行”时,一切正常。问题是,无论是否有人登录,都必须运行它。如果我将任务设置为“无论用户是否登录都运行”,脚本会在以下行失败:

wordDoc = MSWord.Documents.Open(ref fileToConvert, ref refFalse, ref refTrue, 
                                ref RN, ref RN, ref RN, ref RN, ref RN,
                                ref RN, ref RN, ref RN, ref RN, ref RN,
                                ref RN, ref RN, ref RN);

MSWord.Documents.Open() 有效,但返回 null。

此任务在带有 Office 2007 的 Windows Server 2008 上运行。

我应该为此采取其他方法吗?

【问题讨论】:

  • 我遇到了完全相同的问题,花了很长时间试图解决它,走上了各种死胡同,最终我得到的“解决方案”是:不要使用 Windows Server 2008。如果你发现解决这个问题,我会全力以赴。
  • 如果您不使用 Server 2008,它可以工作吗?
  • 在 Windows 2003 服务器或 XP 上,是的。不确定 Vista。

标签: ms-word interop ms-office scheduled-tasks windows-server-2008


【解决方案1】:

我在 Windows Server 2008 下从 Windows 服务自动化 Office 时遇到了问题,即使在 Windows Server 2003 下工作正常。问题也出现在 Open 调用中,尽管它实际上引发了异常,而不是简单地返回 null。无论如何,你可能想试试这个......

我尝试按照 H Ogawa 在this MSDN thread 中给出的建议,似乎奏效了。这很奇怪,但要感谢小川先生发现它。

“Ogawa Hack”总结:为系统配置文件创建一个桌面文件夹

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

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

...取决于您是否拥有 64 位 Windows。

此外,该文件夹需要任何用户“驾驶”Office 的写入权限。

[编辑:更正的链接 URL]

【讨论】:

  • 谢谢。只要时间允许,我得去看看。如果它有效,我会回复。
  • 效果很好!这为我省去了很多(额外的)头痛......现在让我们希望从服务运行 Word 没有任何问题。
  • 它对我有用,但我必须将用户添加到本地管理员组并选中“以最高权限运行”选项。
  • 伟大的黑客,甚至不知道它是如何识别的。像魔术一样工作:)
  • 是的,它也对我有用。过去 5 个小时我一直在苦苦挣扎,创建该文件夹就成功了...
【解决方案2】:

我相信很多人都曾尝试过与您尝试的方式相近的事情,但都失败了。有很多关于无法以类似服务器的模式(无人值守等)运行任何基于办公室互操作的解决方案的讨论。

herehere

我知道这可能不是您要寻找的答案,但它就是这样!

【讨论】:

  • 我正在寻找任何答案。我无法从一堆 Google 搜索中找到有关发生了什么的任何信息,因此感谢您的输入。我将再给它几个小时,如果没有发布“解决方案”,我会将你的标记为答案。
猜你喜欢
  • 1970-01-01
  • 2018-07-02
  • 2013-12-29
  • 2017-06-27
  • 1970-01-01
  • 2020-02-10
  • 1970-01-01
  • 2012-06-05
  • 2012-09-27
相关资源
最近更新 更多