Я с нетерпением жду способа проверить, был ли документ изменен.
- Свойство
Activedocument.Saved
недостаточно, потому что если вы измените sth и отмените это, документ не будет изменен но .Saved
изменится. - Контрольной суммы текста документа будет недостаточно, поскольку не включая изменения в форматировании (полужирный шрифт, itali c et c.).
- Date / времени и размера файла будет недостаточно (команда сохранения из-за того, что она может измениться, даже без изменения в документе).
- встроенный в MS Word сравнение - я не могу использовать это, потому что сначала я вообще работаю над вложенными документами ( один основной документ содержит несколько вложенных документов, и я хочу знать, какой вложенный документ был изменен), и я не хочу создавать копию вложенных документов или создавать новый объект документа для сравнения.
Я придумал, что я сделает контрольную сумму из .WordOpenXML
.
. Для открытого основного документа я вычисляю контрольную сумму
For each sd in Activedocument.SubDocuments
'calculate and remember checksum of subDocument
...
Next sd
Для закрытия основного документа
For each sd in Activedocument.SubDocuments
'calculate and compare with previous checksum of subDocument
...
Next sd
Но для каждой проверки .WordOpenXML
возврат ди другая стоимость. Похоже, что значение WordOpen XML генерируется при каждом вызове.
Это способ избежать этого?
Debug.Print Selection.WordOpenXML=Selection.WordOpenXML
Resume False
: -)
Или, может быть, у вас есть другой способ проверить, был ли документ изменен?