Я не верю, что это возможно. Причина в том, когда вы звоните по следующему коду:
var excel = new ActiveXObject("Excel.Application");
Вы на самом деле открываете Excel. Так со следующей строкой:
workbook.BeforeClose = BeforeCloseEventHandler;
Это похоже на то, что вы говорите приложению Excel запустить Javascript, что невозможно. Я попытался исследовать альтернативы, такие как создание объекта события, определение кода за ним, а затем присвоение его workbook.BeforeClose, но я столкнулся с той же проблемой: события Excel не могут быть обнаружены с помощью javascript. Главным образом потому, что он работает как отдельный процесс.
Итак, вот еще несколько альтернатив, которые вы можете рассмотреть:
- Сохраните данные Excel на компьютере пользователя, затем, когда пользователь потеряет Excel, сделайте так, чтобы они щелкнули где-нибудь, что вызывает ваш первый метод, который читает этот файл и отображает его.
- Считайте данные из файла excel и затем отобразите их.
- Не закрывайте свой объект Excel (это, вероятно, оставит Excel открытым как процесс на вашем компьютере), и имейте событие таймера в javascript. Каждые 5 секунд проверяйте, открыт ли Excel, и если он не открыт, прочитайте файл и отобразите его.
Извините, что больше не могу помочь, и я не уверен, сработает ли какая-либо из этих альтернатив, но удачи!