У меня есть старая версия документов из нескольких слов (документ Word с расширением «.doc»), во всех из которых есть много отслеживаемых изменений.С большинством изменений связаны комментарии.
Мне нужно найти способ использовать python для отклонения всех изменений, внесенных в документы, при сохранении комментариев.
Я попробовал это с новыми версиями Word Document (файлы '. Docx') и не столкнулся с какими-либо проблемами.Все изменения были отклонены, и в текстовом документе остались комментарии.Но когда я попытался сделать это с более старыми версиями Word Document, все мои комментарии были удалены.
Сначала я использовал следующую функцию с несколькими различными версиями файла слова.
def reject_changes(path):
doc = word.Documents.Open(path)
doc.Activate()
word.ActiveDocument.TrackRevisions = False
word.ActiveDocument.Revisions.RejectAll()
word.ActiveDocument.Save()
doc.Close(False)
- Я пытался использовать вышеуказанную функцию с оригинальным документом слова
- Я изменил расширение файла на «.docx» и попробовал указанную выше функцию.
- Я сделал копию документа и сохранил ее в формате «.docx».
Во всех этих случаях комментарии были удалены.
Затем я попробовал следующий код:
def reject_changes(path):
doc = word.Documents.Open(path)
doc.Activate()
word.ActiveDocument.TrackRevisions = False
nextRev = word.Selection.NextRevision()
while nextRev:
nextRev.Reject()
nextRev = word.Selection.NextRevision()
word.ActiveDocument.Save()
doc.Close(False)
По какой-то причине этот код почти работал.Но, проверив несколько документов еще раз, я обнаружил, что, хотя большинство комментариев осталось, пару из них все же удалили.
Я думаю, что, поскольку комментарии удаляются, они, вероятно, являются частью редакций, в этом случае можно проверить, является ли редакция комментарием или нет.Если нет, то может кто-нибудь предложить способ гарантировать, что в документе не будут удалены комментарии об отклонении изменений.
Редактировать:
Итак, я обнаружил, что комментарии, которыебыли удалены были добавлены в документ, когда была активна опция «Отслеживать изменения».Я предполагаю, что это сделало комментарии как часть пересмотра.Поэтому моя первая функция работает довольно хорошо, если комментарии делаются, когда опция «Отслеживать изменения» не активна.
Но тогда у меня есть более двадцати документов со словами (все они представляют собой смесь документов docx и файлов docx), каждый из которых содержит не менее пятнадцати страниц и более пятидесяти комментариев.
Iиспользую win32com.client
.Я не слишком знаком с другими пакетами, которые работают с MS Word.Любая помощь будет оценена.
Спасибо!