【问题标题】:VBA - Close All Workbooks Except Specific OnesVBA - 关闭除特定工作簿以外的所有工作簿
【发布时间】:2018-11-07 21:11:05
【问题描述】:

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

例如,如果有 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 保持打开状态。

据我所知,Book1 和 Book2 都应该保持打开状态..

当我在即时窗口中调试和使用 Debug.Print 时,我得到了这个:

Book1.xlsx

Book2.xlsx

Book3.xlsx

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

【问题讨论】:

  • 您能否解释一下“不起作用” 的含义?你有没有使用调试器检查发生了什么?
  • @FunThomas 抱歉,我更新了问题..
  • @EitelDagnin 在Select Case 之前添加行Debug.Print Ucase(wb.name) 进行调试,运行代码,并发布即时窗口输出。
  • @FunThomas 请查看更新后的问题。
  • 所以你可以看到它是.xlsx 扩展名?也许改变你的代码...

标签: vba excel


【解决方案1】:

我试过了,它对我有用。 您可以调整变量“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

【讨论】:

  • 酷,很高兴为您提供帮助
猜你喜欢
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-24
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多