Понадобилось мне тут по работе с файлами Excel подключить скрипт VBA так, чтоб он виделся из всех документов. Это можно сделать через персональную книгу personal.xlsb
В 2010-м офисе проблем с этим не возникало, но вот обновился я на 2016 и стала творится какая-то херня. Вместе с открываемым документом, если запускать его из проводника, открывалось пустое окно Екселя. Мешать сильно не мешало, но начало раздражать. Полез искать, как это победить. Оказалось, виноват в этом именно файл personal.xlsb, который в скрытом виде, но с отдельным окном зачем-то открывает Ексель.
Долго ползал по интернету, но способа победить эти двойные открывания так и не находились. Либо методы для старых версий попадались, в моей неприменимые, либо предлагалось закрыть тем или иным способом доступ к personal.xlsb, что меня тоже не устраивало.
В конце концов, набрел на некие костыли, скрывающие окно с personal.xlsb сразу после открытия. Т.е. оно все равно открывается, но сразу прячется и не мозолит глаз. Доступ к personal.xlsb при этом по-прежнему есть и на его работу не влияет.
Надо в событие открытия окна personal.xlsb прописать его незамедлительное скрытие. Для этого идём в окно VBA (ALT+F11, например), там в Project Explorer (CTRL+R) находим VBAProject (PERSONAL.XLSB) и в подпапке Microsoft Excel Objects дважды щелкаем по объекту "ЭтаКнига" (ThisWorkbook) и в открывшемся окне вписываем следующий код:
Private Sub Workbook_Open() Application.Visible = 0 End Sub
Должно получиться как-то так:
Понятно, что это все далеко от изящности, но мне глаза мозолить перестало. Если кому-то поможет - на здоровье.