Rambler's Top100 WWW.TEKCT.RU

Сравнение текстовых документов в Microsoft Word 7

 

Buttons

Текстовый редактор Microsoft Word для Windows (версии 6.0 и 7.0) можно, наверное, считать одним из наиболее популярных в России редакторов. Он применяется пользователями самых разных профессий.

Часто бывает, что при работе с большими текстами у пользователя появляется несколько версий одного и того же документа и возникает необходимость сравнить два варианта текста. Когда-то, где-то в тексте были внесены изменения, новая версия документа была сохранена в файле с другим именем, а через некоторое время хозяин файлов не может вспомнить, где и что он изменял. Это вполне обычная ситуация.

Word позволяет выполнить сравнение двух версий документов, но результат выполнения этой операции не всегда может удовлетворить пользователя. Дело в том, что Word проводит «сравнение» путем внесения изменений в один из документов. Эти изменения маркируются (выделяются цветом), могут быть найдены и удалены, но... Во-первых, если в документе уже есть маркированные изменения, то найти новые будет нелегко. Во-вторых, Word иногда предупреждает оператора, что не гарантирует корректность выполнения этой операции. В-третьих, пользователю может быть и не требуется вносить изменения в документ, а надо только увидеть, чем отличаются две версии текста.

Два макроса, представленные ниже, позволяют только сравнить два текста и показать на экране место их различия. Первый из них, СравнитьСтроки, позволяет выполнить построчное сравнение двух текстов. Перед запуском макроса курсоры в обоих документах должны быть установлены на соответствующих друг другу строках. С этих строк и будет начата операция сравнения текстов. Во время выполнения макроса оба документа располагаются в окнах, расположенных одно над другим. Выполнение макроса заканчивается в тот момент, когда обнаруживаются несовпадающие строки - курсоры позиционируются на этих строках. Данный макрос можно использовать только в том случае, когда в обоих текстах абзацы отформатированы одинаково. Если форматирование абзацев в двух текстах различно, то, даже при идентичности текстов, их строки будут организованы по-разному. Текст макроса таков:

Sub MAIN
' Макрос СравнитьСтроки
WindowArrangeAll
Ch1$ = " "
Ch2$ = " "
While Ch1$ = Ch2$
WindowList 1
LineDown 1
Ch1$ = GetBookmark$("\Line")
WindowList 2
LineDown 1
Ch2$ = GetBookmark$("\Line")
Wend
End Sub

Если нельзя выполнить построчное сравнение двух версий текста, то можно попытаться выполнить посимвольное сравнение. Второй макрос, СравнитьСимволы, работает медленнее первого, но в отличие от него не нуждается в совпадении форматов абзацев. Различие версий документов в этом случае можно отследить с точностью до символа. Перед запуском макроса оба курсора в окнах документов необходимо установить на совпадающих участках текстов также с точностью до символа. Проверка текстов будет начата с того места, где установлены курсоры. Как только будет найдена первая пара различающихся символов, выполнение макроса прекратится. В этом случае курсоры в окнах документов будут установлены перед различающимися символами. Текст макроса представлен ниже:

Sub MAIN
' Макрос СравнитьСимволы
WindowArrangeAll
Ch1$ = " "
Ch2$ = " "
While Ch1$ = Ch2$
WindowList 1
CharRight 1
Ch1$ = GetBookmark$("\Char")
WindowList 2
CharRight 1
Ch2$ = GetBookmark$("\Char")
Wend
End Sub

Включить любой из этих макросов в состав Word проще всего, создав пустой макрос и скопировав в него текст соответствующего макроса. Я рекомендую также создать для каждого макроса кнопку. Последовательность действий в этом случае следующая:

  1. В меню Сервис выберите команду Макрокоманда.
  2. Введите имя макроса в открывшемся окне Макрокоманда и нажмите кнопку Записать (то есть щелкните по ней мышью) в этом же окне. Пробелы в имени макроса не допускаются.
  3. Word открывает окно Запись макрокоманды. Нажмите кнопку Панели в этом окне.
  4. Word открывает окно Настройка. Перетащите при помощи мыши название макроса из окна на любую панель инструментов.
  5. Word открывает окно Нестандартная кнопка. В этом окне можно выбрать рисунок для кнопки, но я предлагаю создать кнопку с текстом вместо рисунка. Введите название кнопки (“Сравнить Строки” или “Сравнить Символы”) в поле Имя кнопки в нижней части окна и нажмите клавишу Enter. Пробелы в названии кнопки допускаются.
  6. Нажмите кнопку Закрыть в окне Настройка.
  7. Нажмите кнопку Стоп на панели инструментов Запись макроса, которая к этому моменту оказалась выведенной на экран.
  8. Снова выберите команду Макрокоманда из меню Сервис.
  9. Word открывает окно Макрокоманда. Выберите имя макроса из списка в этом окне и нажмите кнопку Правка.
  10. Word открывает документ для записи текста макроса. Введите текст макроса.
  11. В меню Файл выберите команду Сохранить шаблон, а затем команду Закрыть.

Выполнив эти действия для каждого макроса, вы обогатите свой редактор двумя полезными инструментами. Несколько слов о том, как с ними работать. Сначала необходимо открыть два документа, которые будут сравниваться. Создавать дополнительные окна для документов не следует. Оба макроса написаны в предположении, что сравниваемые документы занимают первую и вторую позиции в списке окон в меню Окно. Если в редакторе открыты только эти два документа, то никаких проблем возникнуть вообще не может. Установите курсоры в обоих документах на идентичные строки и нажмите кнопку Сравнить Строки. Во время выполнения операции сравнения оба текста будут прокручиваться в окнах. Если в текстах есть различие хотя бы в одном символе, то выполнение макроса прекратится, а курсоры в обоих окнах документов будут установлены на несовпадающие строки. Возможно, что в этом месте текста в соответствующих абзацах двух документов идентичность строк будет нарушена. В таких абзацах различия можно искать при помощи макроса СравнитьСимволы (кнопка Сравнить Символы). После того как подобный абзац пройден, можно снова использовать макрос для сравнения строк. Макросы не содержат средств останова при достижении конца текста, так как прервать выполнение каждого макроса можно, нажав клавишу Esc.

Я использовал эти макросы для сравнения двух версий текста объемом 200 страниц и могу сказать, что работать было удобно.

А.Гончаров

1996 г.

Рейтинг@Mail.ru Rambler's Top100