По случаю обнаружения сюрприза от MS Excel cегодняшний пост.

Но все по порядку. Вчера обратился ко мне коллега с просьбой помочь заполнить некую форму в MS Excel. Форму ему прислали сверху, поэтому часть ячеек предварительно была защищена от изменения паролем дабы исполнитель не делал лишних ошибок. Но автор формы тоже был не промах и не проверив внешние связи выслал форму как есть. Это привело к неожиданному результату – часть формул приняло вид типа «=СУММ(D10;'C:\Documents and Settings\Pupkin\Local Settings\Temporary Internet Files\Content.IE7\DFGRETGFG\[Tabla.1.xls]1 rozd'!$E$7:$E$9)»
Очевидно что править такую радость нет возможности ибо лист защищен и эта формула тоже.
Что делать?
Самый старый способ – это копирование всего листа на новое место и там правка и формул и форматирования. Но форматирование делать долго, да и теряется защита листа. Вдруг автору документа не понравится?)
Оказывается с появлением MS Excel 2007 существует более изящный способ.
Так как теперича файл XLSX имеет формат ZIP-архива, то его можно разложить на составляющие
xml–файлы и rels-отношения .
Поступаем так:
• открываем XLSX-файл через Winrar. Можете переименовать XLSX в ZIP для удобства.
• по пути ".../xl/worksheets/sheetN.xml", где N- номер листа, т.е. 1,2,3... выбираем Лист, защищённый паролем (поочерёдно следующую процедуру провести для всех запароленных листов).
• вытаскиваем файл "sheetN.xml" из контейнера XLSX в любую временную папку и открываем текстовым редактором (Notepad++).
• поиском по тексту ищем слово "password". Редактор находит XML-контейнер, например
• удаляем весь контейнер "sheetProtection" от "<" до ">".
• сохраняем файл.
• копируем файл обратно в контейнер XLSX с заменой старого.
• всё. Защита с листа снята. Можно править файл!
Коллега вне себя от счастья.) Но это еще не все. Файл то был в формате XLS. Поэтому надо добавить еще пару шагов а именно: открыть его в MS Excel 2007 и сохранить в XLSX. Проделать шаги по снятию пароля, после правки точно также вернуть контейнер с защитой на место и в конце концов сохранить опять же в формате xls для MS Excel 2003. Вот теперь точно все!
И это работает как для MS Excel 2007 так и для MS Excel 2010. Т.е. кто-то может вставить в ваш защищенный паролем файл что угодно и выдать его за оригинал, а то как же - пароль же ваш установлен. ))
Вот такой вот сюрприз!
Надо проверить! Если это правда, то можно здорово повеселиться
ReplyDeleteМне уже давно весело. Может в 2016-м это исправили.
ReplyDeleteУпсс, и 2016-й Excel с тем же глюком. Читайте мой пост в октябре этого года.
ReplyDelete