Как книга может открыть себя в отдельном экземпляре Excel - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу, чтобы моя книга открывалась в отдельном экземпляре Excel.Если он открывается в других книгах, он должен открыть себя в новом экземпляре, возможно, с использованием кода в событии Workbook_Open.Кроме того, рабочая книга должна препятствовать открытию файлов в одном и том же экземпляре, возможно, путем перемещения их в новый экземпляр или перемещения самого себя в новый.Любые идеи будут высоко оценены.

Редактировать: Цель этого состоит в том, чтобы рабочие книги, загруженные кодом и пользовательскими формами, имели тенденцию легко аварийно завершаться, вызывая аварийное завершение всех других рабочих книг, открытых в том же экземпляре, и потерю всех несохраненных изменений и конецпользователь разочарован.Другая проблема заключается в том, что при использовании Application.OnKey у меня возникли три проблемы: 1. ярлык запускает код, который обычно предназначен для действия с книгой, в которой он находится. Это можно решить, проверив, является ли рабочая книга хостинга активной книгой перед этим.работает, но лучше не допустить их запуска в первую очередь.2. общие ярлыки могут быть переназначены для запуска пользовательского кода, но обычно это не должно влиять на другие книги.3. Проблемы возникают, когда несколько рабочих книг назначают один и тот же ярлык для пользовательских подпрограмм.последняя открытая рабочая книга выполняет действие ярлыка.Кроме того, когда книга, содержащая ярлык, закрыта, использование ярлыка автоматически открывает книгу, что нежелательно!Удаление пользовательского ярлыка не решает проблему нескольких рабочих книг, использующих один и тот же ярлык.

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

1 Ответ

0 голосов
/ 11 февраля 2019

Мне пришлось сделать книгу Excel (на которой был запущен таймер), чтобы она снова открылась в другом экземпляре Excel.Это должно было позволить пользователю использовать первый экземпляр Excel без вмешательства таймера.Я не уверен, что это именно то, что вам нужно, но это, безусловно, может помочь вам начать.Вы можете найти код на GitHub здесь .

Интересующая вас процедура называется OpenItSelfInAnotherInstance и расположена в OpenItself.bas.

.для работы вам также нужно будет включить код, содержащийся в API_Maximize.bas, API_Sleep.bas и UDF_ExcelIntances.bas.(Если вы копируете-вставляете, всегда исключайте строку, которая гласит: Attribute VB_Name =..., поскольку она существует только при импорте файла * .bas из VBE)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...