我有一本使用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
事件不会触发,因为它没有机会。该文档将关闭,重新打开后将其显示为崩溃文件,并在恢复列表中列出。
谁能帮助我理解为什么以及如何克服它。
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