我有一个 的用户使用Microsoft Word 2007在他的ASP Web应用程序中创建和操作word文档。我很清楚'Considerations for server-side Automation of 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执行其想要执行的其他类型的初始设置例程。
答案 0 :(得分:2)
我能想到两件事:
MyWorkBook .Saved尚未设置为true。因此,Quit调用导致WinWord显示“您是否希望保存”对话框。在服务器上。在没有桌面的会话下。毋庸置疑,Word永远不会在等待用户时退出。
您的用户脚本并不总是进入退出行。这是使用Office Automation的常见原因,也许是最大的原因,因为您确实需要多层异常处理和最终语句(这不是VBScript或ASP经典引擎的强点),以确保正确清理实例。
答案 1 :(得分:0)
现在这个问题不再适用了。几乎所有问题都与WINWORD.EXE
需要提升权限(高于我们允许的网站匿名用户帐户)才能执行某些任务有关。
客户明智地决定使用ASPOSE.Words for .NET,它也有一个COM可调用包装器,所以经典的ASP代码也可以使用它。