【发布时间】:2016-12-12 12:11:25
【问题描述】:
我正在尝试在宏的开头关闭所有打开的单词应用程序,尽管我不知道打开了哪些文档,也无法将它们设置为对象。 谢谢。
【问题讨论】:
-
这可能就是你要找的东西:excel-macro.tutorialhorizon.com/…
我正在尝试在宏的开头关闭所有打开的单词应用程序,尽管我不知道打开了哪些文档,也无法将它们设置为对象。 谢谢。
【问题讨论】:
这将关闭所有正在运行的 Word 文档。
如果没有 Word 应用程序实例正在运行,您需要 On Error Resume Next 以防止出现错误。
Option Explicit
Sub CloseWordDocuments()
Dim objWord As Object
Do
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
On Error Go To 0
If Not objWord Is Nothing Then
objWord.Quit
Set objWord = Nothing
End If
Loop Until objWord Is Nothing
End Sub
编辑
以下更正,因为上面的循环有一个缺陷,即它会在 Word 的第一个实例关闭后退出...
Option Explicit
Sub CloseWordDocuments()
Dim objWord As Object
Dim blnHaveWorkObj As Boolean
' assume a Word object is there to be quit
blnHaveWorkObj = True
' loop until no Word object available
Do
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
If objWord Is Nothing Then
' quit loop
blnHaveWorkObj = False
Else
' quit Word
objWord.Quit
' clean up
Set objWord = Nothing
End If
Loop Until Not blnHaveWorkObj
End Sub
【讨论】:
On Error Go To 0 紧跟在Set objWord ... 之后
试试下面的代码,它会关闭 Word 应用程序(不保存)。
Option Explicit
Sub CloseWordWindows()
Dim objWord As Object
On Error Resume Next
Set objWord = GetObject(, "Word.Application")
' if no active Word is running >> exit Sub
If objWord Is Nothing Then
Exit Sub
End If
objWord.Quit
Set objWord = Nothing
End Sub
【讨论】:
另一种选择是使用Shell 来访问powershell 的优雅
Sub Comesfast()
X = Shell("powershell.exe kill -processname winword", 1)
End Sub
【讨论】: