Vba 检查工作簿是否存在,如果存在,则检查其是否打开。如果打开,则激活;如果关闭,则打开

Vba 检查工作簿是否存在,如果存在,则检查其是否打开。如果打开,则激活;如果关闭,则打开,vba,excel,Vba,Excel,我正在进行VBA程序,需要执行以下操作: 单击按钮时(宏运行): 检查文件夹中是否存在MS EXCEL工作簿。如果不存在,则给出“工作簿不存在”的消息,VBA程序应结束 如果工作簿存在,则检查工作簿是否已关闭或打开。如果已关闭,则打开工作簿,VBA程序应按其他步骤移动 如果工作表已打开,则激活工作簿,VBA程序应按其他步骤移动 到目前为止,我已经写了这篇文章,但它不起作用: Sub test() Dim WbookCheck As Workbook On Error Resum

我正在进行VBA程序,需要执行以下操作:

单击按钮时(宏运行):

  • 检查文件夹中是否存在MS EXCEL工作簿。如果不存在,则给出“工作簿不存在”的消息,VBA程序应结束

  • 如果工作簿存在,则检查工作簿是否已关闭或打开。如果已关闭,则打开工作簿,VBA程序应按其他步骤移动

  • 如果工作表已打开,则激活工作簿,VBA程序应按其他步骤移动

  • 到目前为止,我已经写了这篇文章,但它不起作用:

    Sub test()
        Dim WbookCheck As Workbook
    
        On Error Resume Next
        Set WbookCheck = Workbooks("Weekly Report.xls")
        On Error GoTo 0
         filepaths = "c:\clients\work\Weekly Report.xls"
        If Dir("filepaths") = False Then
            MsgBox "Please save the latest file under the name 'US Sector Flow Weekly Report' and run the macro again"
            Exit Sub
        ElseIf WbookCheck Is Nothing Then
            Workbooks.Open "c:\clients\work\Weekly Report.xls"
        Else
            WbookCheck.Activate
        End If
    Workbooks("Weekly Report.xls").Activate
    
    Sheets("This week").Select
        Sheets("This week").Copy Before:=Workbooks( _
            "Consolidated.xls").Sheets(1)
    
    End Sub
    

    “不工作”可能更明确一点-运行时会发生什么?如果您删除了“错误转到”时的
    ,则查找错误的可能性可能更高“不工作”可能更明确一点-运行时会发生什么?如果您删除了“错误转到”时的
    ,可能有更高的机会找到错误谢谢Tim和EngJon的回复。非常感谢你的帮助。我将尝试你给出的代码。谢谢Tim和EngJon的回复。非常感谢你的帮助。我将尝试你给出的代码。
    
    Sub test()
    
        Dim WbookCheck As Workbook
    
        On Error Resume Next
        Set WbookCheck = Workbooks("Weekly Report.xls")
        On Error GoTo 0
    
        If WbookCheck Is Nothing then 'not open....
    
            filepaths = "c:\clients\work\Weekly Report.xls"
    
            If Dir(filepaths) = "" Then
                MsgBox "Please save the latest file under the name" & _
                  " 'US Sector Flow Weekly Report' and run the macro again"
                Exit Sub
            Else
                'file exists - open it
                Set WbookCheck = Workbooks.Open(filepaths)
            End If
        End If
    
        with WbookCheck
            .Activate
            .Sheets("This week").Copy _
                    Before:=Workbooks("Consolidated.xls").Sheets(1)
        end with
    
    End Sub