А АFriday, 1 February 2013

Защита листа в MS Excel - теперь это шутка !


       По случаю обнаружения сюрприза от 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. Т.е. кто-то может вставить в ваш защищенный паролем файл что угодно и выдать его за оригинал, а то как же - пароль же ваш установлен. )) 


      Вот такой вот сюрприз!

3 comments:

Unknown said...

Надо проверить! Если это правда, то можно здорово повеселиться

Nyukers said...

Мне уже давно весело. Может в 2016-м это исправили.

Anonymous said...

Упсс, и 2016-й Excel с тем же глюком. Читайте мой пост в октябре этого года.

Post a Comment

А что вы думаете по этому поводу?

Версия на печать

Популярное