保存事件后如何使用excel来运行超级查询并再次保存

问题描述 投票:0回答:1

我有一本使用Power Query填充表的excel工作簿。该查询从多个外部工作簿以及同一工作簿中的工作表中的表中提取信息。

同一工作簿中的工作表还存储了对要操纵的列的更改。同一工作簿中的工作表是循环的一部分。它存储被拉到主表中的信息,但也存储所做的更改。

为了使此工作正常进行,需要在运行存储查询之前保存工作簿。如果在运行查询之前未发生保存,则查询将不包含更改。

单击保存按钮即可轻松完成。以下代码效果很好:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Application.EnableEvents = False
    ThisWorkbook.Save
    ThisWorkbook.Connections("Query - Stored").Refresh
    Application.EnableEvents = True
End Sub

当关闭工作簿并单击关闭文档后单击保存时,此功能不起作用。

BeforeSave事件不会触发,因为它没有机会。该文档将关闭,重新打开后将其显示为崩溃文件,并在恢复列表中列出。

谁能帮助我理解为什么以及如何克服它。

excel vba
1个回答
0
投票
您可以像这样尝试在关闭之前执行刷新

Private Closing As Boolean Private Sub Workbook_BeforeClose(Cancel As Boolean) Closing = True Application.EnableEvents = False ThisWorkbook.Save ThisWorkbook.Connections("Query - Stored").Refresh Application.EnableEvents = True End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) If Closing Then Exit Sub Application.EnableEvents = False ThisWorkbook.Save ThisWorkbook.Connections("Query - Stored").Refresh Application.EnableEvents = True End Sub

© www.soinside.com 2019 - 2024. All rights reserved.