Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从excelvba关闭word应用程序_Vba_Excel_Powershell - Fatal编程技术网

从excelvba关闭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文档

如果没有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