Suponha que exista um marcro example_code
em um arquivo do Excel 2016: example_excel.xlsm
que possui muito código, mas não cria arquivos externos (todos os cálculos são realizados em example_excel.xlsm
.
Fiquei curioso para saber se existe uma maneira de:
- Quebrar / pausar o código em execução em um momento arbitrário.
- Adicione manualmente a próxima linha no código que: Executa / chama uma função / sub que:
- Salva o
example_excel.xlsm
estado completo (incluindo a planilha e a célula que são ativadas e selecionadas, bem como as variáveis / ambiente de execução de código), - Feche-o em qualquer ponto arbitrário do código e
- Reabra o excel
- Continue executando o código
example_code
de onde você parou, - Depois de remover a linha inserida que salva o estado do excel,
- ou instantaneamente
- ou depois de clicar em 1 botão / executar 1 macro?
Como tenho um código complexo que é executado em instâncias de 2 horas enquanto executa várias configurações programadas do "solucionador" e enquanto soluciona um estado específico do solucionador, estou aguardando uma hora antes que esse estado ocorra / seja acionado.
Agora, a solução mais fácil seria procurar todos os parâmetros, estados de planilha e célula que estão presentes nesse estado, armazená-los em uma planilha separada e depois reiniciá-los. Mas isso não permite flexibilidade na solução de problemas se outro estado precisar ser avaliado, nem é conveniente ao usar o objeto .ie que possui um loop infinito dentro dele, por exemplo, pai tem um filho que possui um item que é pai da criança novamente (pensei que isso existisse, embora não tenha certeza).
A resposta difícil é; reescreva / refatore seu código para que ele se torne menos complexo e mais esclarecedor. Definitivamente, eu preciso fazer, mesmo quando isso for feito, uma ferramenta generalizada para salvar os estados durante a execução, pelo menos para mim, é desejável.
Tentativas até agora: [na edição - elaborará.] Minha principal dificuldade no ponto de partida é que eu não sei como executar todos os parâmetros / variáveis se a lista de parâmetros for desconhecida.
Até agora, como o problema original consistia em várias execuções de 2 horas, escrevi um código que copia automaticamente todas as planilhas e todos os módulos e formulários do excel atual para um excel diferente. Isso permite salvar tudo, menos as variáveis contidas no código, nem a ativação da planilha e da célula.
Como esse código não se aplica especificamente a um tempo arbitrário durante um código em execução, nem copia as variáveis usadas pelo excel, considero esse código fora de tópico, a menos que solicitado de outra forma.
Sinto que estou procurando uma abordagem de solução muito reduzida, portanto, sugestões para procurar opções diferentes / mais amplas para resolver o problema são bem-vindas!