hhhhh1


Популярное

hhhhh2


понедельник, 13 октября 2014 г.

Привет от Microsoft XL.


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

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


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