0

我有一个用户必须使用 Microsoft Word 2007 在他的 ASP Web 应用程序中创建和操作 Word 文档。我很清楚“ Office 服务器端自动化的注意事项”知识库文章以及许多可用于执行此类操作的第三方组件,但他们已经在这条路上走了一段路。

他遇到的问题是,WINWORD.EXE即使他调用Quit了应用程序对象,进程也永远不会终止。

例如:

Set objWord = Server.CreateObject("Word.Application")
'' Do work
objWord.Quit
Set objWord = Nothing

正如您所料,他的服务器最终充满了WINWORD.EXE 需要手动干预才能终止的孤立进程。

有没有办法WINWORD.EXE在脚本中明确终止这些进程?

更新:

我在这方面取得了一些进展,我想我已经掌握了问题所在。当 Office 应用程序在新的 Windows 帐户下首次运行时,它会询问您的姓名和首字母缩写。现在因为没有可见的 GUI,所以没有人可以按下所有正确的按钮。我尝试WINWORD.EXE使用 开始作为网站匿名帐户身份RUNAS,但存在一些权限问题,阻止 Word 或 Office 执行它想要执行的某种其他类型的初始设置例程。

4

2 回答 2

2

我能想到的有两点:

MyWorkBook .Saved 尚未设置为 true。结果,Quit 调用导致 WinWord 显示“您希望保存”对话框。在服务器上。在没有桌面的会话下。不用说,Word 在等待用户时永远不会退出。

您的用户脚本并不总是进入 Quit 行。这是反对使用 Office 自动化的常见原因,也许是最大的原因,因为您确实需要多层异常处理和 finally 语句(这不是 VBScript 或 ASP 经典引擎的强项)来确保正确清理实例。

于 2009-06-10T12:19:28.627 回答
0

这个问题现在不再相关。几乎所有问题都与WINWORD.EXE需要提升权限(高于我们允许的网站匿名用户帐户)才能执行某些任务有关。

Customer has wisely decided to use ASPOSE.Words for .NET which also has a COM callable wrapper so classic ASP code can use it too.

于 2009-06-15T16:53:02.813 回答