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

Однако, если пользователь затем решает закрыть электронную таблицу без сохранения изменений, макрос не запускается, и текстовый вывод не обновляется до состояния до внесения изменений.

Тривиальный пример, чтобы прояснить проблему:

  • скажем, ячейка B3 содержит строку "Пиво"
  • Затем пользователь редактирует эту ячейку в "Wine"
  • макрос обнаруживает изменение и обновляет текстовый файл до "Wine"
  • если пользователь затем закрывает Excel без сохранения изменений, ячейка B3, очевидно, снова становится "Пиво" (хотя, поскольку Excel закрывается, это видно только при следующем открытии электронной таблицы)… но текстовый файл продолжает отображать «Wine msgstr ", потому что закрытие Excel без сохранения, по-видимому, не вызывает событие изменения, которое можно использовать для запуска макроса. Даже вызов макроса из событий Workbook_BeforeClose или Workbook_Deactivate не обновляет вывод текста из "Wine" обратно в "Beer"

Любые предложения, как я могу сделать откат вывода текста?

1 ответ1

0

С помощью небольшого дополнительного кода мне удалось заставить вещи работать следующим образом:

  • когда открывается Excel, макрос VBA создает TEXTFILE и немедленно копирует его в файл TEXTCOPY
  • когда пользователь вносит изменения, TEXTFILE обновляется, но TEXTCOPY не
  • когда пользователь сохраняет изменения, TEXTCOPY обновляется
  • когда пользователь выходит из Excel без сохранения, TEXTFILE удаляется и TEXTCOPY переименовывается в TEXTFILE
  • когда пользователь закрывает Excel с сохранением, TEXTCOPY удаляется

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .