Предположим, что в файле Excel 2016 есть marcro example_code : example_excel.xlsm котором много кода, но не создаются внешние файлы (все вычисления выполняются в example_excel.xlsm .

Мне было любопытно, есть ли способ:

  1. Прервать / приостановить выполнение кода в любой момент.
  2. Вручную добавьте следующую строку в коде: Запускает / вызывает функцию / подпрограмму, которая:
  3. Сохраняет полное состояние example_excel.xlsm (включая лист и ячейку, которые активированы и выбраны, а также переменную / среду выполнения кода),
  4. Закройте его в любой произвольной точке кода и
  5. Снова откройте Excel
  6. Продолжайте выполнять код example_code с того места, где вы остановились,
  7. После удаления вставленной строки, которая сохраняет состояние Excel,
  8. либо мгновенно
  9. или после нажатия 1 кнопки / запуска 1 макроса?

Поскольку у меня есть сложный код, который выполняется в течение 2 часов при выполнении нескольких запрограммированных установок "решателя" и при устранении неполадок в определенном состоянии решателя, я жду час, прежде чем это состояние возникает / срабатывает.

Теперь простым решением будет поиск всех параметров, состояний листа и ячеек, которые присутствуют в этом состоянии, сохранение их на отдельном листе и их повторная инициализация. Но это не допускает гибкости при устранении неполадок, если необходимо оценить другое состояние, и это не удобно при использовании объекта .ie, в котором есть бесконечный цикл, например, у parent есть дочерний элемент, у которого есть элемент, являющийся родительским. снова (я думал, что это существовало, хотя я не уверен).

Сложный ответ: переписать / реорганизовать ваш код, чтобы он стал менее сложным и более проницательным. Это, безусловно, нужно сделать, но даже когда это будет сделано, универсальный инструмент для сохранения состояний во время работы, по крайней мере, для меня, желателен.

Попытки пока: [в редактировании - разработают.] Моя основная трудность заключается в том, что я не знаю, как выполнить все параметры / переменные, если список параметров неизвестен.

До сих пор, поскольку исходная задача состояла из нескольких прогонов по 2 часа, я написал код, который автоматически копирует все листы, а также все модули и формы из текущего Excel в другой Excel. Это позволяет сохранять все, кроме переменных внутри кода, а также активацию листа и ячейки.

Поскольку этот код специально не применяется к произвольному времени во время выполнения кода и не копирует переменные, используемые Excel, я считаю этот код не по теме, если не требуется иное.

Мне кажется, что я ищу очень суженный подход к решению, поэтому приветствуются предложения по изучению различных / более широких вариантов решения проблемы!

0