Я изменил диапазон формулы в файле sheet6.xml электронной таблицы, используя функцию изменения / замены регулярного выражения EditPlus, используя это регулярное выражение:
Найти: (SUM\(J.*:)(S)(.*\))
Заменить: \1\N\31
Который, например, правильно изменяет вхождения SUM(J1024:S1024)
на SUM(J1024:N1024)
, поскольку электронная таблица не содержит данных за пределами столбца N.
Затем я удаляю calcChain.xml
и архивирую все в новый файл XLSM. Когда я загружаю файл в Excel, я получаю сообщение о том, что файл содержит ошибки и что, если я нажму OK, Excel попытается восстановить файл. После нажатия ОК Excel сообщает:
Excel смог открыть файл, исправив или удалив нечитаемый контент.
Удаленные записи: формула из /xl/worksheets/sheet6.xml
Нажмите, чтобы просмотреть исправления списка файлов журнала: (бла, бла-бла) \error123720_01.xml.
Содержимое error123720_01.xml:
<?xml version="1.0" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main">
<logFileName>error123720_01.xml</logFileName>
<summary>Errors were detected in file 'C:\Users\mbmas_000\Directory Junctions\Documents - Local\Estate Accounting-2016-05-19.Mod2.xlsm'</summary>
<removedRecords>
<removedRecord>Removed Records: Formula from /xl/worksheets/sheet6.xml part</removedRecord>
</removedRecords>
</recoveryLog>
Итак, как вы можете видеть, файл "detail" вообще не содержит подробностей и не добавляет больше информации, чем оригинальное диалоговое окно.
Сама таблица, однажды открытая и отображенная в Excel, выглядит нормально. Мои модифицированные формулы там. Все выглядит хорошо; однако это гигантская электронная таблица, и кто знает, есть ли там какая-то ошибка.
Мне бы очень хотелось узнать, что делал Excel при выполнении этого "ремонта". Это зарегистрировано где-нибудь? Есть ли способ заставить Excel регистрировать это, если это не регистрируется? Я попытался извлечь XML из "восстановленного" файла и сравнить его с XML, который произвел мое изменение, но это оказалось очень сложным, так как Excel также воспользовался возможностью заменить многие избыточные формулы общими формулами (<f t="shared" ...>
), значительно изменяющий исходный XML и делающий сравнение очень трудным.