代码之家  ›  专栏  ›  技术社区  ›  Eitel Dagnin

vba-关闭所有工作簿(特定工作簿除外)

  •  0
  • Eitel Dagnin  · 技术社区  · 6 年前

    我在任何地方都找不到解决这个问题的办法。有很多资源可以帮助您关闭除活动工作簿以外的所有工作簿,但我需要特定的工作簿保持打开状态。

    例如,如果有10个工作簿打开,我需要关闭其中7个,并保持其中3个打开。

    我找到的最接近的解决方案是:

    https://www.ozgrid.com/forum/forum/help-forums/excel-general/73743-close-all-open-workbooks-except

    Dim wb As Workbook
    For Each wb In Workbooks
        Select Case Ucase(wb.name)
            Case "BOOK1.XLS", "BOOK2.XLS", Ucase(ThisWorkbook.name)
                'Code, if any
            Case Else
                wb.Close SaveChanges:=True
        End Select
    Next wb
    

    但这行不通。它关闭了Book2,只有Book1还未关闭。

    据我所知,第一册和第二册都应该保持开放。

    当我调试和使用debug.print在即时窗口中时,我会得到:

    书号1.xlsx

    书2.xlsx

    书号3.xlsx

    它基本上只打印出打开的3个工作簿名称。

    1 回复  |  直到 6 年前
        1
  •  2
  •   JC Guidicelli    6 年前

    我试过了,它对我有用。 您可以调整vars“wbstayopenx”:

    Dim wbStayOpen1 As String
    Dim wbStayOpen2 As String
    Dim currentwb As String
    
    wbStayOpen1 = "BOOK1.XLS"
    wbStayOpen2 = "BOOK2.XLS"
    currentwb = ThisWorkbook.Name
    
    
    Dim wb As Workbook
    For Each wb In Workbooks
    
        If wb.Name <> wbStayOpen1 And wb.Name <> wbStayOpen2 And wb.Name <> currentwb Then
        wb.Close SaveChanges:=True
        End If
    
    Next wb