gpt4 book ai didi

excel - Workbook_BeforeClose() 在第一部分起作用,但不关闭 Workbook

转载 作者:行者123 更新时间:2023-12-04 20:26:18 26 4
gpt4 key购买 nike

我有两个工作簿:工作簿 A 和工作簿 B。
我试图打开工作簿 B 一次 Workbook_BeforeClose()调用工作簿 A 的函数(通过关闭工作簿)。
此步骤有效(因此打开了工作簿 B)。但是在打开工作簿 B 后,工作簿 A 仍处于打开状态,必须再次手动关闭(这次 Workbook_BeforeClose() 函数不再被调用)。

我遇到了两个问题:

  • 工作簿 A 在 Workbook_BeforeClose() 之后未关闭函数被调用。
  • 打开的工作簿 B 以奇怪的格式打开(缺少 Excel 菜单栏和标题栏(用于最小化和关闭窗口)。

  • 这在我使用 Workbooks.Open() 时从未发生过与其他工作簿一起使用。

    还有 Workbook_BeforeClose()功能运行良好,而仅调用 logEntry Sub (无 Workbooks.Open() )。

    这是代码:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim wbA As Workbook

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

    'Workbook A (the one to close) is the ActiveWorkbook
    Set wbA = ActiveWorkbook

    'Sub to add some data to a Log.txt (works fine at this point).
    Call logEntry

    'Open Workbook B only if Workbook A is ReadOnly
    '(I replaced the full path with <>, but the original path is correct. Workbook B opens)
    If wbA.ReadOnly = True Then
    Workbooks.Open Filename:= <path as String>, ReadOnly:=True
    End If

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

    End Sub


    我已尝试添加 wb.Close()在打开工作簿 B 之后,但这会导致错误,因为 Workbook_BeforeClose()这个函数再次被调用。

    最佳答案

    该方法的问题是您的代码正在打开 Workbook B在您尝试退出的同一个 excel 应用程序中。由于 Workbook A从不关闭退出功能。

    请使用以下代码打开Workbook B在一个新的 excel 应用程序中。

    If wbA.ReadOnly = True Then
    Set app = New Excel.Application
    app.Visible = True
    app.Workbooks.Open Filename:="<Workbook B path>", ReadOnly:=True
    End If

    关于excel - Workbook_BeforeClose() 在第一部分起作用,但不关闭 Workbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59564970/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com