По случаю обнаружения сюрприза от 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-отношения.