2016-12-12 104 views
3

我试图在我的宏开始时关闭所有的单词应用程序,如果它是开放的,但我不知道哪些文档是开放的,我不能将它们设置为对象。 谢谢。从excel vba关闭word应用程序

+0

这优雅可能是你在找什么:http://excel-macro.tutorialhorizo​​n.com/vba-excel- get-the-instance-of-already-opened-word-document/ – Ralph

回答

3

这将关闭所有正在运行的Word文档。

如果没有运行Word应用程序实例,则需要On Error Resume Next以防止出现错误。

Option Explicit 

Sub CloseWordDocuments() 

    Dim objWord As Object 

    Do 
     On Error Resume Next 
     Set objWord = GetObject(, "Word.Application") 
     If Not objWord Is Nothing Then 
      objWord.Quit 
      Set objWord = Nothing 
     End If 
    Loop Until objWord Is Nothing 

End Sub 
1

请尝试下面的代码,它将关闭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 
+0

如果没有Word应用程序实例正在运行,您是否会遇到错误? –

+0

@RobinMackenzie @RobinMackenzie今天我的键盘技巧很高,已经修复了:)即使我喜欢你的循环 –

+0

希望我们可以将分数分开然后;-) –

1

另一种选择是使用Shell来accesss的

Sub Comesfast() 
X = Shell("powershell.exe kill -processname winword", 1) 
End Sub