Предположим, что в файле Excel 2016 есть marcro example_code
: example_excel.xlsm
котором много кода, но не создаются внешние файлы (все вычисления выполняются в example_excel.xlsm
.
Мне было любопытно, есть ли способ:
- Прервать / приостановить выполнение кода в любой момент.
- Вручную добавьте следующую строку в коде: Запускает / вызывает функцию / подпрограмму, которая:
- Сохраняет полное состояние
example_excel.xlsm
(включая лист и ячейку, которые активированы и выбраны, а также переменную / среду выполнения кода), - Закройте его в любой произвольной точке кода и
- Снова откройте Excel
- Продолжайте выполнять код
example_code
с того места, где вы остановились, - После удаления вставленной строки, которая сохраняет состояние Excel,
- либо мгновенно
- или после нажатия 1 кнопки / запуска 1 макроса?
Поскольку у меня есть сложный код, который выполняется в течение 2 часов при выполнении нескольких запрограммированных установок "решателя" и при устранении неполадок в определенном состоянии решателя, я жду час, прежде чем это состояние возникает / срабатывает.
Теперь простым решением будет поиск всех параметров, состояний листа и ячеек, которые присутствуют в этом состоянии, сохранение их на отдельном листе и их повторная инициализация. Но это не допускает гибкости при устранении неполадок, если необходимо оценить другое состояние, и это не удобно при использовании объекта .ie, в котором есть бесконечный цикл, например, у parent есть дочерний элемент, у которого есть элемент, являющийся родительским. снова (я думал, что это существовало, хотя я не уверен).
Сложный ответ: переписать / реорганизовать ваш код, чтобы он стал менее сложным и более проницательным. Это, безусловно, нужно сделать, но даже когда это будет сделано, универсальный инструмент для сохранения состояний во время работы, по крайней мере, для меня, желателен.
Попытки пока: [в редактировании - разработают.] Моя основная трудность заключается в том, что я не знаю, как выполнить все параметры / переменные, если список параметров неизвестен.
До сих пор, поскольку исходная задача состояла из нескольких прогонов по 2 часа, я написал код, который автоматически копирует все листы, а также все модули и формы из текущего Excel в другой Excel. Это позволяет сохранять все, кроме переменных внутри кода, а также активацию листа и ячейки.
Поскольку этот код специально не применяется к произвольному времени во время выполнения кода и не копирует переменные, используемые Excel, я считаю этот код не по теме, если не требуется иное.
Мне кажется, что я ищу очень суженный подход к решению, поэтому приветствуются предложения по изучению различных / более широких вариантов решения проблемы!