Rambler's Top100
 
 
  07 октября 2008 года Компьюлента
CIO
Терралаб
Бизнес-журнал
в поле зрения| обзоры и тесты| своя игра| интерактив
Удаление лишних пробелов в Word
Автор: Антон Кокин
Опубликовано 17 января 2007 года

Если вы в силу специфики своей работы часто получаете документы Word, подготовленные кем-то другим, то наверняка встречали в текстах помимо орфографических ошибок, проблемы иного рода - лишние пробелы между словами или перед знаками препинания. Удалять их вручную утомительно и требует много времени. Но можно значительно облегчить себе жизнь, если создать два макроса, которые самостоятельно и в мгновение ока избавят документ от этой напасти. Макросы не оригинальны и созданы по мотивам советов авторов книги "Microsoft Word: комфортная работа с помощью макросов".

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

1. Зайдите в меню "Сервис" (Tools), выберите команду "Макрос" (Macro) и из открывшегося списка выберите команду "Начать запись" (Record New Macro). Появится диалоговое окно, в котором следует назначить макросу имя (пусть будет DeleteSpace) и щелкнуть на кнопке с изображением молотка для назначения макросу кнопки. Если вы не хотите выводить кнопку макроса на панель инструментов, а желаете пользоваться сочетаниями клавиш, то можете кликнуть на кнопке с изображением клавиатуры:

Word: удаление лишних пробелов в тексте

2. Откроется диалоговое окно, в котором вам следует перейти на среднюю вкладку "Команды" и из правого поля перетащить на панель инструментов ваш новый макрос с названием Normal.NewMacros.DeleteSpace. Кстати, позже или прямо сейчас вы можете изменить стиль кнопки, отредактировав ее текст или назначив для кнопки какое-нибудь подходящее изображение.

3. Закройте окно. После этого на рабочем окне документа появится панелька с управляющими кнопками для записи макроса (см. скриншот).

Word: удаление лишних пробелов в тексте

4. Теперь будьте аккуратны, так как макрос уже пишется. Нажмите сочетание клавиш "CTRL+H". Откроется диалоговое окно "Найти и Заменить". Для доступа к параметрам поиска нажмите кнопку "Больше", если диалоговое окно представлено в краткой форме.

5. Удалите всё, что находится в поле "Найти" и в поле "Заменить". Нажмите кнопку "Снять форматирование", если эта кнопка активна. Снимите все галочки с режимов в группе "Параметры поиска", но оставьте или поставьте галочку "Подстановочные знаки". Выберите в открывающемся списке направление "Везде".

6. Выделите весь текст документа, нажав сочетание клавиш "CTRL+A".

7. Введите в поле "Найти" пробел, а потом введите следующее выражение:

{2;}

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

8. Перейдите в поле "Заменить на" и введите один пробел.

9. Нажмите кнопку "Заменить все". Таким образом, если будет найдено несколько подряд стоящих пробелов, то все они заменятся на один пробел.

10. После окончания поиска и замены закройте диалоговое окно "Найти и заменить". Снимите выделение текста, нажав на клавиатуре клавишу стрелки.

11. Нажмите на кнопку с квадратиком в управляющей панели, чтобы остановить запись.

Для тех читателей, которые знают, как работать со встроенным в Microsoft Word редактором Visual Basic, я просто приведу готовый код макроса:

Sub DeleteSpace()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " {2;}"
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.MoveRight Unit:=wdCharacter, Count:=1

Второй созданный нами макрос будет находить и удалять все лишние пробелы перед знаками препинания. Повторите шаги с 1 по 6 включительно. Назовите макрос как DeleteSpacePunctuationMark. Дальнейшие шаги:

1. Введите в поле "Найти" сначала пробел, а потом введите следующее выражение:

{1;}([.,:;\!\?])

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

2. Перейдите в поле "Заменить на" и введите \1 (здесь единица означает порядковый номер выражения, заключенного в круглые скобки).

3. Нажмите кнопку "Заменить все".

4. После окончания поиска и замены закройте диалоговое окно "Найти и заменить". Снимите выделение текста, нажав на клавиатуре на клавишу стрелки.

5. Нажмите на кнопку с квадратиком в управляющей панели, чтобы остановить запись.

Получившийся код для вставки в редактор VisualBasic:

Sub DelSpacePunktMark()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " {1;}([.,:;\!\?])"
.Replacement.Text = "\1"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.MoveLeft Unit:=wdCharacter, Count:=1
End Sub

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

ПОСЛЕДНИЕ КОММЕНТАРИИ
05.02.2008 02:19:43
theatrped:
В общем-то и Bassta прав(а) - действительно, общие лишние пробелы с помощью ^w удаляются, но пробелы в начале-конце абзаца остаются, и перед знаками препинания тоже. Так что статья (макросы приведенные) дельные. При всех раскладах. Только не ошибка ли: ",.;-\!\?" Может быть надо ",\.\-\!\?" У меня во всяком случае с этой заменой работает. А до этого (с другого ресурса этиже макросы брал) - не работало. А ручками делать? На вкус и цвет товарщей нет - каждый в душе мазохист, конечно.
 
ТАКЖЕ В РАЗДЕЛЕ
 
"Лаборатория Касперского" расширяет программу "ЗАЧЕТный антивирус": скидка 40% всем участникам, а также подарок каждому десятому покупателю в октябре и ноябре.

Офисный сезон - Все включено!
Интернет+телефон+виртуальный и почтовый сервер. От 7000 руб./мес.
www.akado-telecom.ru

Matrix X - три платформы для любой сетевой среды
Обеспечивает непревзойденную производительность, стабильность соединения и бесперебойную работу, подходит для магистральных каналов корпоративных сетей и ЦОД.
Подвижное в неподвижном
Идея использовать мобильный доступ к Интернету в качестве основного (домашнего) сомнительна, но в ряде ситуаций иного выхода просто нет. Операторы сотовой связи большого энтузиазма по этому поводу, впрочем, не демонстрируют. 
Пингвин, устремленный в Редмонд
Linux XP Desktop до боли напоминает Windows - таким образом разработчики постарались максимально облегчить "мигрантам" с Windows процесс перехода на новую ОС. Но этого обычно мало, так что предприняты еще кое-какие меры 
К вопросу об альтернативной истории
В своей новой видеоколонке Анатолий Вассерман рассказывает о непростом труде профессиональных историков, о возможности использования сослагательного наклонения в исторических кругах и о роли в истории, которую играет каждый из нас. 
"Внедорожники" и "спортсмены"
Если первые пыле- и влагозащищенные телефоны так и хотелось сравнить с тракторами, то типичный "внедорожник" образца 2008 года у меня ассоциируется с чем-то вроде Toyota RAV4 - максимум – попробуй, прокатись на ней по раскисшей пашне! 
Голубицкого к ответу!
Сергей Голубицкий согласился дать интервью порталу Computerra.ru. Однако беседа с легендарным автором "Голубятен" будет, мягко говоря, необычной. Ведь все вопросы к Сергею (заметим, на любую тему) придумаете вы, уважаемые читатели. 
/  бумажный номер

Тема номера: Дополненная реальность Читайте на сайте тему номера "Дополненная реальность" и другие статьи из журнала "Компьютерра" от 16 сентября 2008 года
  Архив номеров журнала

О проекте | Реклама на сайте | Рассылки сайта | КПК–версия | RSS-трансляция

© ООО «Компьютерра–Онлайн», 1997 — 2008.
При цитировании и использовании любых материалов ссылка на портал «Компьютерра–Онлайн» обязательна (для Интернет–изданий — www.computerra.ru)
Редакция сайта: site@computerra.ru
Техподдержка сайта: websupport@computerra.ru
Редакция журнала: inform@computerra.ru
Отдел рекламы: reklama@computerra.ru
Телефон: (495) 232–22–61, (495) 232–22–63
Работает на «Битрикс: Управление сайтом»
Почта защищена сервером «СПАМОРЕЗ»
Трилан — продвижение сайта,
поисковая оптимизация сайта

Сайт работает на сервере DEPO Computers
Rambler's Top100