
Я изменил диапазон формулы в файле sheet6.xml электронной таблицы, используя функцию изменения/замены регулярных выражений EditPlus, используя следующее регулярное выражение:
Находить:(SUM\(J.*:)(S)(.*\))
Заменять:\1\N\31
Что, например, правильно изменяет вхождения на SUM(J1024:S1024)
, SUM(J1024:N1024)
поскольку электронная таблица не содержит данных за пределами столбца N.
Затем я удаляю calcChain.xml
и архивирую все в новый файл XLSM. Когда я загружаю файл в Excel, появляется окно с сообщением о том, что файл содержит ошибки и что если я нажму OK, Excel попытается восстановить файл. После нажатия OK 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 и сделав сравнение очень сложным.