我有一个带有宏的 Excel 工作簿。我使用“欢迎”表来确保用户根据此处说明的技术启用宏(http://www.vbaexpress.com/kb/getarticle.php?kb_id=379)。一切工作正常,直到我使用 Power Query 扩展工作簿。我创建了一个查询来读取和转换位于同一工作簿中的 Excel 表。然后,转换后的表将加载到同一工作簿的新工作表中。现在,每当用户保存工作簿时,我都需要使用 VBA 刷新此转换后的表。我正在使用此代码进行刷新:
ThisWorkbook.Worksheets("Sheet2").ListObjects("MyTable").QueryTable.Refresh BackgroundQuery:=False
不幸的是,如果用户保存工作簿并在保存后立即关闭工作簿,即使没有进行任何更改,也会出现保存更改的提示。由于某种原因,刷新 QueryTable 会将 ThisWorkbook.Save 属性设置为 False,因此 Excel 会在关闭时提示保存未保存的更改。
如果没有进行任何更改,如何摆脱关闭时的提示?
谢谢你。
在BeforeClose事件中,您可以额外保存一次(以防万一用户没有自行保存),然后将SaveChanges设置为False关闭:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ThisWorkbook.Save
ThisWorkbook.Close SaveChanges:=False
End Sub
如果您的行位于 BeforeSave 事件中,那应该没问题。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ThisWorkbook.Worksheets("Sheet2").ListObjects("MyTable").QueryTable.Refresh BackgroundQuery:=False
End Sub