Средства разработки приложений

         

Как перенести текст из Dos-редактора в Word


Возможно, в Вашем офисе тоже есть бухгалтер, до сих пор предпочитающий работать под Dos. Время от времени Вам необходимо работать с его текстовыми файлами. Часто в таких случаях открытый файл занимает лишь часть страницы и выглядит следующим образом: Отчет по продажам рогов и копыт. За истекший период рога и копыта были проданы Мурманским филиалом на сумму девятнадцать миллионов семьдесят тысяч теньге, Астраханским филиалом на пятнадцать миллионов...

Как видите, текст занимает только полэкрана. Проблема состоит в том, что текстовые редакторы под Dos расставляют символы конца абзаца в конце каждой строки. Широко известен алгоритм, позволяющий преобразовать такие документы к нормальному виду Word.

  1. Заменить два подряд идущих символа конца абзаца на символ табуляции.
  2. Заменить символы конца абзаца на пробелы.
  3. Заменить символы табуляции на символы конца абзаца.

Довольно утомительно каждый раз проводить такие замены вручную, поэтому напишем макрос, который будет это делать за нас.


Sub FormatDosText() Selection.WholeStory Rem Выделяем весь текст Selection.Find.ClearFormatting Rem Снимаем предыдущие условия поиска Selection.Find.Replacement.ClearFormatting Rem Снимаем предыдущие условия замены With Selection.Find Rem Задаем новые условия поиска и замены .Text = "^p^p" Rem Замена двух концов абзаца на символ табуляции .Replacement.Text = "^t" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll Rem Производим замену With Selection.Find .Text = "^p" Rem Замена конца абзаца на пробел .Replacement.Text = " " .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll With Selection.Find .Text = "^t" Rem Замена символа табуляции на символ конца абзаца .Replacement.Text = "^p" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute Replace:=wdReplaceAll End Sub

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

Содержание раздела