【问题标题】:Run auto_close when there are several workbooks open当有多个工作簿打开时运行 auto_close
【发布时间】:2021-01-31 12:45:12
【问题描述】:

每当工作簿关闭时,我都会尝试运行 VBA 代码

我在模块中尝试了Private Sub auto_close(),在“ThisWorkbook”中尝试了Private Sub Workbook_BeforeClose(Cancel As Boolean)。它们在打开单个文件时都有效,但在打开多个文件时无效。

问题是,如果同时打开多个 Excel 文件(工作簿),这似乎行不通。只有当我将它们关闭到只打开一个文件时,才会执行代码

【问题讨论】:

  • 两个解决方案的范围都是当前工作簿。如果您尝试关闭和/或所有打开的工作簿,您需要一个 Public 范围并将其放置在 Personal.xlsm 或 Personal .xlsb 工作簿中,然后让它在 ActiveWorkbook 上运行或遍历所有打开的工作簿。 HTH

标签: excel vba


【解决方案1】:

防止使用类关闭工作簿

  • 请注意,此代码分为三个不同的模块。在课程方面,我是新手,我只做过一次类似的东西。我不明白它何时或为何停止(但有时它会停止)。因此,如果您遇到麻烦,请再问一个问题(您现在有一个与课程相关的代码)并将Class 放在标题中,希望更有资格的人可以回答。
  • 对您来说唯一可能是新的东西是第三个代码,它必须进入一个类模块。插入一个新的类模块 (Class1) 并在属性窗口中将 Class1 更改为 wbCloser。将代码复制到相应的模块中并保存工作簿。然后在标准模块中运行AppEventsInit
  • 请注意,每次打开此工作簿时,AppEventsInit 都会运行 (Workbooks_Open)。

ThisWorkbook

Option Explicit

Private Sub Workbook_Open()
    AppEventsInit
End Sub

标准模块,例如Module1

Option Explicit

Public AppEvent As New wbCloser ' Class Name ('wbCloser')

Sub AppEventsInit()
    Set AppEvent.App = Application
End Sub

类模块:Class1 重命名为 wbCloser

Option Explicit

Public WithEvents App As Application

Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
    Dim msg As Variant
    msg = MsgBox("The workbook '" & Wb.Name _
        & "' is trying to close. Will you allow it?", vbYesNo)
    If msg = vbYes Then
        'Cancel = False ' by default
        MsgBox "You allowed closing of '" & Wb.Name & "'."
    Else
        Cancel = True
        MsgBox "You prevented closing of '" & Wb.Name & "'."
    End If
End Sub

Private Sub Class_Initialize()
    ' Remove if it doesn't work.
    Application.Speech.Speak "Workbook Clozer Initialized"
End Sub

【讨论】:

    【解决方案2】:

    试试这个: 打开 VBA 并在此插入模块类型后:

    Sub CloseAllActiveWorkbooks()

    工作簿.close

    结束子

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-10
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多