Как использовать Excel после события сохранения для запуска запроса Power Power, а затем снова сохранить - PullRequest
0 голосов
/ 14 февраля 2020

У меня есть книга Excel, которая использует Power Query для заполнения таблицы. Запрос извлекает информацию из нескольких внешних рабочих книг, а также из таблицы в рабочей таблице одной и той же рабочей книги.

Рабочий лист в той же рабочей книге также хранит изменения в столбцах, которые предназначены для манипулирования. Рабочий лист в той же Рабочей книге является частью al oop. Он хранит информацию, которая извлекается в основную таблицу, но также сохраняет сделанные изменения.

Для правильной работы этой книги необходимо сохранить рабочую книгу перед выполнением запроса хранилища. Если сохранение не происходит до выполнения запроса, запрос не будет содержать изменений.

Это легко сделать, нажав кнопку сохранения. Следующий код работает хорошо:

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 не срабатывает, потому что у него нет шанса. Документ закрывается, и при повторном открытии он отображается как сбойный файл и отображается в списке восстановления.

Может кто-нибудь помочь мне понять, почему и как его преодолеть.

1 Ответ

0 голосов
/ 14 февраля 2020

Так как это вызвано тем, что Excel cra sh при закрытии, вполне возможно, что Refre sh будет испорчен, когда происходит закрытие.

Вы можете попробовать выполнить Refre sh перед закрытием, как это

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...