【发布时间】:2017-05-14 23:15:17
【问题描述】:
我在 Excel 中有这个 VB 脚本,它可以从 Excel 文件创建 Word 文档。
但是,每当我重新运行相同的脚本时,都会提示 Word 文件已打开并已锁定以进行编辑。我手动转到任务管理器并结束所有打开的 Word 进程。是否有脚本来检查特定的 Word 文件是否已打开,如果是,它将终止该进程?
【问题讨论】:
标签: vbscript ms-word terminate
我在 Excel 中有这个 VB 脚本,它可以从 Excel 文件创建 Word 文档。
但是,每当我重新运行相同的脚本时,都会提示 Word 文件已打开并已锁定以进行编辑。我手动转到任务管理器并结束所有打开的 Word 进程。是否有脚本来检查特定的 Word 文件是否已打开,如果是,它将终止该进程?
【问题讨论】:
标签: vbscript ms-word terminate
在创建word文档之前,可以通过放置以下代码关闭进程WINWORD.EXE:
CreateObject("WScript.Shell").Run "taskkill /f /im WINWORD.EXE", 0
完成此操作后,您可以继续创建 word 文件。即使有多个进程在运行,它们也会全部终止。
这里/f表示强制删除进程,/im表示我们正在传递进程名(本例中为WINWORD.EXE)。
想了解更多关于taskkill命令,可以参考本站:https://technet.microsoft.com/en-in/library/bb491009.aspx
编辑 2: 如果打开了多个文档,而您只想关闭其中一个,则可以编写以下代码来关闭该特定文档:
案例一:当你知道要关闭的word文件的准确路径时
strPath = "store the word file path in this variable"
set objDoc = getobject(strPath)
objDoc.close
set objDoc = Nothing
案例 2:当您只知道名称(假设名称是 Document1)而不知道路径时
set objWord = getobject(,"word.application")
set objDocs = objWord.Documents
for each doc in objDocs
If strComp(doc.name,"Document1",1)=0 then
doc.close
Exit For
End If
next
set objDocs = Nothing
set objWord = Nothing
【讨论】: