
Modifiquei o intervalo de uma fórmula no arquivo sheet6.xml da planilha usando o recurso de alteração/substituição de expressão regular do EditPlus, usando esta expressão regular:
Encontrar:(SUM\(J.*:)(S)(.*\))
Substituir:\1\N\31
O que, por exemplo, altera corretamente as ocorrências de SUM(J1024:S1024)
para SUM(J1024:N1024)
, já que a planilha não contém dados além da coluna N.
Em seguida, excluo calcChain.xml
e compacto tudo em um novo arquivo XLSM. Quando carrego o arquivo no Excel, recebo uma caixa de mensagem informando que o arquivo contém erros e que, se eu clicar em OK, o Excel tentará reparar o arquivo. Depois de clicar em OK, o Excel declara:
O Excel conseguiu abrir o arquivo reparando ou removendo o conteúdo ilegível.
Registros removidos: fórmula da parte /xl/worksheets/sheet6.xml
Clique para visualizar os reparos da listagem do arquivo de log: (blá, blá, blá) \error123720_01.xml.
O conteúdo de 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>
Então, como você pode ver, o arquivo "detail" não contém nenhum detalhe e não adiciona mais informações do que a caixa de diálogo original apresentada.
A planilha em si, uma vez aberta e exibida pelo Excel, parece boa. Minhas fórmulas modificadas estão lá. Tudo parece bem; no entanto, esta é uma planilha gigantesca e quem sabe se há algum erro escondido nela.
Eu realmente gostaria de saber o que o Excel fez ao realizar esse “reparo”. Isso está registrado em algum lugar? Existe uma maneira de fazer com que o Excel registre-o se não estiver sendo registrado? Tentei extrair o XML do arquivo "reparado" e compará-lo com o XML que minha alteração produziu, mas isso se mostrou muito desafiador, pois o Excel também aproveitou a oportunidade para substituir muitas das fórmulas redundantes por fórmulas compartilhadas ( <f t="shared" ...>
), alterando significativamente o XML original e tornando a comparação muito difícil.