从excelvba关闭word应用程序
在宏的开始部分,我尝试关闭所有word应用程序(如果它处于打开状态),尽管我不知道哪些文档处于打开状态,也无法将它们设置为对象。从excelvba关闭word应用程序,vba,excel,powershell,Vba,Excel,Powershell,在宏的开始部分,我尝试关闭所有word应用程序(如果它处于打开状态),尽管我不知道哪些文档处于打开状态,也无法将它们设置为对象。 谢谢。尝试下面的代码,它将关闭Word应用程序(不保存) 这将关闭所有正在运行的Word文档 如果没有Word应用程序实例正在运行,您需要在下一步恢复出错时执行 Option Explicit Sub CloseWordDocuments() Dim objWord As Object Do On Error Resume
谢谢。尝试下面的代码,它将关闭Word应用程序(不保存)
这将关闭所有正在运行的Word文档 如果没有Word应用程序实例正在运行,您需要在下一步恢复出错时执行
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
另一个选项是使用Shell
访问
这可能就是你想要的:如果没有运行Word应用程序实例,你不会出错吗?@RobinMackenzie今天我的键盘技能很高,已经修复:)尽管我喜欢你的loop@RobinMackenzie我喜欢这里的改进学习,你的循环很简单(我还没想到)使用OERN捕获可能的错误时,必须尽快恢复错误处理。在这种情况下,如果出现错误,请在设置objWord…
@chrisneilsen-谢谢,已更新后立即转到0
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
Sub Comesfast()
X = Shell("powershell.exe kill -processname winword", 1)
End Sub