Неожиданно обнаружилось, что в сети есть люди, которые до сих пор пользуются старыми релизами Офиса, потому что тратить деньги на новый Офис нет никакого смысла - старые Офисы уже умеют всё, что надо - и только некоторые аспекты мышления программистов MS в них вызывают недоумение как и у меня. Про новый идиотский интерфейс мы сегодня не будем - это тема для отдельной дискуссии, а вот про работу с файлами в многооконном интерфейсе мы сегодня поговорим. Как побороть манеру Excel 2010 открывать все таблицы по двойному щелчку в одном и том же окне?
До версии 2013 MS Excel работал с таблицами в режиме MDI - multiple document interface - все документы в одном окне родительской программы. При этом Word прекрасно запускался в режиме SDI - single document, открывая все файлы в отдельных окнах со своим интерфейсом. Пока 2 монитора на столе были экзотикой это было совершенно по барабану, на панели задач вы видели "несколько окон программы", а то, что это физически это одно родительское окно - вам Эксель не показывал.
Но в нынешние времена, когда работа в параллель с парой широких таблиц на двух экранах стала нормой, манера Excel открывать по двойному клику мышью новую таблицу поверх старой, с невозможностью её сразу перетащить на соседний экран, стала бесить.
Вы скажете, что можно растянуть родительское окно? Да, можно, но это неудобно, оно полностью перекрывает рабочий стол. Как можно и открыть 2 таблицы в разных окнах, сначала запустив 2 копии родительской программы и открыв вторую таблицу во второй копии программы. Что тоже неудобно.
Как просто запустить новую таблицу в режиме SDI?
Проблема запуска одного окна кроется в том, что индусы из MS зачем-то решили выполнять запуск Эксель по расширению через DDE, а не стандартным способом. По двойному щелчку выполняется строка "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /dde, а уже через DDE производится выполнение сообщения [open("%1")], где %1 - имя файла. При этом если выполнять открытие из командной строки EXCEL.EXE 123.xls - всё прекрасно откроется в новом окне.
Когда я начал изучать решение проблемы, все советы в сети оказались однообразно-нерабочими. Точнее рабочими, но почему-то не всегда и не у всех:
Отредактировать ветку реестра HKEY_CLASSES_ROOT\Excel.Sheet.XX\shell\Open\command, в параметре "по умолчанию" заменить команду запуска на "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"; В ветке реестра HKEY_CLASSES_ROOT\Excel.Sheet.XX\shell\Open папку ddeexec переименовать. Команда может варьироваться от совета к совету, но суть одна - строка запуска заменяется в ветках Excel.Sheet.8 и Excel.Sheet.12, после чего результат лично у меня на разных релизах Windows был непредсказуем - от полной неработы, до работы 50/50. Почему - знают только индусы из MS.
Решение всё же было найдено. Если вы хотите сделать чтобы и у вас сработало решение - попробуйте. Описание решения - для Office 2010, для 2007 папка с программой будет другая.
Вам потребуется программа FileTypesMan. Но не вздумайте с её помощью напрямую редактировать строку запуска для команды Open для расширений XLS и XLSX - получите результат как с прямым редактированием реестра.
Вам нужно создать новую команду для расширений XLS и XLSX (щелчок правой кнопкой по расширению - New Action). Содержимое полей - как на второй картинке, командная строка "C:\Program Files (x86)\Microsoft Office\Office14\EXCEL.EXE" /e "%1"
Не забудьте назначить команду "Открыть в новом окне" как действие для файла по умолчанию.
Изменения вступают в действие сразу. Если сделаете всё правильно для обоих типов файлов - всё начнёт открываться по двойному щелчку как надо и без демонстрации дурацкого логотипа экселя. Плюс, если что - всегда можно откатиться назад убрав новую команду (и назначив по умолчанию Open). Из минусов - Эксель не проверяет уже открытые файлы и при повторном открытии будет демонстрировать диалог блокировки.
Аналогично можно поступить и с doc и docx, чтобы ворд перестал показывать логотип, прописав в командной строке "C:\Program Files (x86)\Microsoft Office\Office14\WINWORD.EXE" /q /n "%1"