Como reverter outro arquivo quando o Excel é fechado sem salvar?

0

Eu tenho uma planilha do Excel com uma macro que grava alguns valores de célula em um arquivo de texto. Quando qualquer um desses valores de célula é alterado, a macro é acionada e a saída de texto é atualizada.

No entanto, se o usuário decidir fechar a planilha sem salvar as alterações, a macro não será acionada e a saída de texto não será atualizada para o estado antes que as alterações sejam feitas.

Um exemplo trivial para esclarecer o problema:

  • diga que a célula B3 contém a string "Beer"
  • o usuário então edita essa célula para "Wine"
  • a macro detecta a alteração e atualiza o arquivo de texto para "Wine"
  • se o usuário fechar o Excel sem salvar as alterações, a célula B3 obviamente voltará a "Cerveja" ( embora, como o Excel está fechando, isso só é visível na próxima vez que a planilha for aberta ) … Mas o arquivo de texto continua exibindo "Wine", porque fechar o Excel sem salvar aparentemente não causa nenhum evento de alteração que possa ser usado para disparar a macro. Mesmo chamar a macro dos eventos Workbook_BeforeClose ou Workbook_Deactivate não atualiza a saída de texto de "Wine" de volta para "Beer"

Alguma sugestão de como posso reverter a saída do texto?

    
por Scott 02.03.2017 / 02:16

1 resposta

0

Com apenas um pequeno código extra, consegui fazer as coisas funcionarem da seguinte forma:

  • quando o Excel é aberto, a macro VBA cria o TEXTFILE e imediatamente copia isso para um arquivo TEXTCOPY
  • quando o usuário faz alterações, o TEXTFILE é atualizado, mas o TEXTCOPY não é
  • quando o usuário salva as alterações, o TEXTCOPY é atualizado
  • quando o usuário sai do Excel sem salvar, o TEXTFILE é excluído e o TEXTCOPY é renomeado para TEXTFILE
  • quando o usuário fecha o Excel com o salvamento, o TEXTCOPY é excluído
por 02.03.2017 / 18:59