我有一个预定的LotusScript代理,它在客户机上运行(9.0社交版)。它的目的之一是打开Word文档并将其另存为PDF,但这并不重要。下面是相关的代码片段
Declarations
Dim wrdApp as Variant
Sub Initialize
[Getting the usual Notes Session, Database, View values]
Set wrdApp = createObject("Word.Application")
wrdApp.visible = True
starthere:
'we check to see if there is anything that has been deferred
Set v = db.GetView("RIT")
strStatus = "Success"
Set doc = v.Getfirstdocument()
If (doc Is Nothing) Then Exit Sub
[Snip]
End Sub
Sub Terminate
wrdApp.visible = True
Dim quitCode As Variant
quitCode = 0
Call wrdApp.quit(quitCode)
Print "Quit called, waiting 3 seconds"
' Wait a couple seconds
Sleep(3)
Print "Done waiting, setting wrdApp to Nothing"
Set wrdApp=Nothing
Print "Exiting agent"
End Sub我遇到的问题是,自从我们升级到Office 2016后,有时代理永远不会终止。在日志中,我看到了"Done waiting,setting wrdApp to Nothing“,但没有看到"Exiting agent”。我最终打开了一个Word窗口(当然没有文档),当我在任务管理器中查看时,我看到一个WINWORD.EXE正在运行,CPU为0%,CPU时间为2到3秒。当然,这也不是每次都会发生,这只是为了增加趣味性。由于代理永远不会结束,所以所有其他调度的代理都会被挂起,直到我删除僵尸单词实例。我已经尝试了我能找到的所有建议(您会注意到我让Word可见,并使用一个变量作为退出的参数,我甚至出于分离而抛出了睡眠(3)),但都没有起到任何作用。在Office2010中,我们从来没有遇到过这个问题(即使代理代码要草率得多)。此外,无论我是否实际打开Word文档,问题都可能发生。有解决方案吗?还是回到O2010是唯一的选择?
发布于 2017-09-25 20:30:48
很抱歉让您久等了。我开发了一个包装类,它可以“透明地”处理Word和OpenOffice文件。你可以在下面找到它的一部分。我的客户从来没有抱怨过代码不再工作,但这也可能是因为他们使用库打开使用模板的文档,然后用数据填充文档,然后让文档保持打开状态。
乍一看,有一个不同之处:我在您退出的地方使用Close。
--打开文档
Function CreateMSWordDocument As Variant
Dim msWord As Variant
On Error Goto CreateNewInstance
Set msWord = GetObject("", "Word.Application")
Done:
Set CreateMSWordDocument = msWord
Exit Function
CreateNewInstance:
Print "Loading Microsoft Word.... Please Wait...."
Err = 0
Set msWord = CreateObject("Word.Application")
Print "Microsoft Word Loaded"
Resume Done
End Function
Set wdDoc= CreateMSWordDocument--再次关闭:
Sub Close
Call wdDoc.Close
End Sub除了上面这些,我没有更多的信息给你。
发布于 2017-10-03 20:07:45
我不确定这是否仍然与你相关。
我已经使用Word很久了,就像你做的那样(只是把它包装在一个类中)。然而,我也遇到过完全相同的问题。
解决方案是在我关闭文档后什么也不做-然后WINWORD任务就会在后台静静地退出!
HTH /John
发布于 2017-12-28 05:07:37
作为更新/回答这个问题的一种方式,我放弃了寻找真正的答案,而是编写了一个C#程序,该程序可以查找任何运行时间超过15分钟的WINWORD.EXE实例,并终止该进程。然后,我使用Task Scheduler每15分钟启动一次该程序。它是粗糙和丑陋的,但它扑灭了我之前的4级火警。
https://stackoverflow.com/questions/46330465
复制相似问题