Макрос для удаления лишних пробелов word

Обновлено: 07.07.2024

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

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

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

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

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

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

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

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

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

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

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

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

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

Sub DeleteSpace()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " "
.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. Введите в поле "Найти" сначала пробел, а потом введите следующее выражение:

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

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

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

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

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

Sub DelSpacePunktMark()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " ([. ;\!\?])"
.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, особенно при поиске лишних пробелов в тексте.


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

Как удалить лишние пробелы в тексте используя макрос

Использование макроса, в том числе для удаления лишних пробелов в тексте, проходит в несколько шагов.

1. Включаем возможность использования макросов в тексте. Для этого переходим "Файл - Параметры - Настроить ленту". Включаем чекбокс "Разработчик", далее нажимаем "ОК".

macroses1

Выбираем появившуюся на ленте вкладку "Разработчик", далее нажимаем на значок (желтый треугольник - предупреждение с восклицательным знаком) для выбора настройки параметров безопасности макроса.

macroses2

Выбираем "Включить все макросы (не рекомендуется, возможен запуск опасной программы)". Затем "ОК", для применения параметров.

macroses3

В длинном списке находим "Удаление лишних пробелов".

macroses4

Переходим на страницу скачивания макроса и копируем сам макрос.

macroses5

Вставляем макрос. Для этого переходим в документ Word, далее на вкладке "Разработчик" выбираем Visual Basic.

macroses6

В открывшемся окне: "Insert - Module".

macroses7

Вставляем макрос, который мы скопировали, в открывшееся окно. Затем закрываем это диалоговое окно, макрос готов к работе.

macroses8

Для проверки работоспособности макроса в вордовском документе вставляем лишние пробелы между словами. На вкладке "Разработчик" выбираем "Макросы". Выбираем макрос, который нам нужен (DeleteSpace) и нажимаем "Выполнить".

macroses9

Появится диалоговое окно, в котором нам напишут сколько лишних пробелов было устранено, а также будет предложено начать поиск с начала документа. Отвечаем "Да". Программа проверит весь документ и удалит лишние пробелы, если такие имеются во всем документе.

macroses10

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

Для обеспечения безопасности (применение скриптов не безопасно), после применения макроса, отключаем возможность выполнения макросов. Для этого на вкладке "Разработчик" нажимаем на желтый треугольник с восклицательным знаком и в настройках параметрах безопасности макросов выбираем "Отключить все макросы без уведомления", далее "ОК".

macroses11

Если хотите убрать вкладку "Разработчик", то переходим "Файл - Параметры - Настроить ленту". Снимаем чекбокс с "Разработчик", нажимаем "ОК".

Помогите решить задачу. Практически ничего не шарю в VBA.

В выделенном фрагменте русскоязычного документа текстового процессора Word убрать все лишние пробелы между словами (оставить только по одному пробелу).

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

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


Убрать все лишние пробелы между словами (оставить только по одному пробелу)
Dim St As String, Stl As String Dim P As String * 10, Sym As String * 1 Dim KR As Long, KN As.

В приложении Microsoft Word создайте макрос, который бы в выделенном фрагменте устанавливал нумерованный список
В приложении Microsoft Word создайте макрос, который бы в выделенном фрагменте устанавливал.

[КуМир] Убрать из строки все лишние пробелы - чтобы не было подряд более одного пробела
Результат сохранить в отдельной переменной и вывести на экран. Например: ввод - "слова слова.

Помогите решить задачу. Практически ничего не шарю в VBA.

Пытаюсь.
А шарить-то и не надо — просто запишите макрос! (В этом собственно вся фишка VBA.)

  1. Сочетание клавиш Ctrl-h (появилось окно поиска и замены)
  2. В поле "Найти:" символ пустое пространство: ^w (без пробелов!)
  3. В поле "Заменить на:" один пробел (его не видно, так что аккуратно)
  4. Ok (кнопка, выполняющая замену)
  5. Остановить запись
  6. Посмотреть процедуру в редакторе VBA-проекта вашего документа (по ALT-F11)

Выполнять её можно через альт-F8, а редактировать по альт-F11 (и заодно выполнять).

как текст в Ворде закинуть в переменную - не знаю, Selection - кривенько, но работает, главное здесь - поздняя привязка к Excel. Добавлено через 23 часа 55 минут
Dolgisha,
я ошибся, используй вот этот код для удаления лишних пробелов. Я как-то пробовал использовать код, указанный выше, но он удалял пробелы и в др. местах:
Sasha_Smirnov,
хорошая идея, но она убирает также и знаки Табуляции (стрелочки) (может и ещё чего убирает, я только на Табуляции проверил). Alex77755,
твой макрос надо запускать несколько раз, да и как ты узнаешь, что все лишние пробелы удалены? А если будут ещё встречаться и неразрывные пробелы? Ну у меня он стоит в цикле (проверка на наличие сдвоенных пробелов)
Да я сейчас им и не пользуюсь. То пока дочка училась и скачивала документы непроавильно отформатированныё(пробелами) приходилось редактировать.
А что такое неразрывные пробелы я даже не знаю

Хоть это и макрос, но Trim вроде бы лишь внешние пробелы убивает у Selection, а?

как текст в Ворде закинуть в переменную - не знаю, Selection - кривенько, но работает, главное здесь - поздняя привязка к Excel. Поотвязнее (в ворде) текст документа закидывается в пременную так (*барабанная дробь*):
Хоть это и макрос, но Trim вроде бы лишь внешние пробелы убивает у Selection, а? trim, который в VBA - да, но здесь же Excel прицепляется, для чего?
ибо это XL.Trim(. правильнее (да, именно, правильнее) будет, конечно, XL.WorksheetFunction.Trim(..
а эта штука (СЖПРОБЕЛЫ) удаляет все лишние пробелы из всей строки.
см. рис (*барабанная дробь*):

Alex77755,
в твоём случае проще было бы использовать интерфейс Word, когда сдвоенные пробелы заканчиваются, то пишет, что произведено ноль замен.
Что-то ты совсем загнул.
Неразрывный пробел используется, чтобы в одной строке была определённая информация, например, ООО "Название компании", если надо, чтобы они были всегда вместе между ООО и "Название компании ставят не обычный пробел, а неразрывный (Ctrl + Shift + Пробел).

Добавлено через 4 минуты
аналитика,
я чего-то не понимаю может быть, но при чём здесь в этой теме Excel?

Busine2009,
Может быть.
Это кусок из макроса.
Первое, что пришло тогда в голову.
Кроме удаления лишних пробелов в макросе было ещё несколько функций. И на панели была кнопочка. Поэтому мне было проще пользоваться моей кнопочкой чем несколькими функциями ворда по очереди
За информацию о неразрывном пробеле - спс. Век живи - век учись

Убрать лишние пробелы
отформотировать строку 1)убрать все лишние пробелы 2) убрать 1 пробел после знака препинания .

Убрать лишние пробелы
Введите массив символов из n элементов. Убрать лишние пробелы (более одного подряд).

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

space

Пример будет показан на версии Microsoft Office Word 2016.

Способ 1. Без использования макросов.

Воспользуемся простым поиском и заменой, то есть, инструментами редактора Word.

На главной странице находим кнопку «Заменить» и нажимаем на нее.

space

Напротив «Найти» вводим в поле два пробела.

Напротив «Заменить» вводим в поле один пробел.

После этого нажимаем на кнопку «Заменить все».

space

space

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

Для этого (на примере запятой):

На главной странице находим кнопку «Заменить» и нажимаем на нее.

Напротив «Найти» вводим в поле пробел и тогда кому.

Напротив «Заменить» вводим в поле только кому.

После этого нажимаем на кнопку «Заменить все».

space

space

Способ 2. Использование макросов.

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

Берем два кода, что ниже и копируем в буфер обмена:

Sub DeleteSpace()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " "
.Replacement.Text = " "
.Forward = True
.Wrap = wdFindAsk
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.MoveRight Unit:=wdCharacter, Count:=1
End Sub
Sub DelSpacePunktMark()
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = " ([. ;\!\?])"
.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

Открываем «Макросы», перейдя на вкладкку «Вид», и нажав на соответствующую кнопку. Если у вас есть установленные или записанные макросы, то можно выделить любой из них и нажать на кнопку «Изменить». Если макросов нет, то в поле «Имя» пишем любое имя без пробелов. Также имя макроса не может состоять только из одних цифр. Дали для макроса имя, теперь можно нажать на кнопку «Создать».

space

space

Примечание. Для быстрого запуска визуального редактора Microsoft Visual Basic (именно в нем происходит редактирование макросов) нужно нажать сочетание клавиш Alt+F11.

Откроется окно визуального редактора для добавления макроса. Просто после горизонтальной линии вставляем два наших кода, которые перед этим скопировали. Если вы создавали имя макроса, то можете удалить его и заменить нашими готовыми макросами (чтобы не было пустых макросов при выборе). Во всяком случае код нужно вставить после End Sub.

space

Сохраняем наши изменения.

space

Нажимаем опять на кнопку «Макросы», выбираем из списка только что добавленные и нажимаем «Выполнить».

space

Для удаления пробелов используем макрос с именем (его можно изменить) DeleteSpace, а для пробелов перед знаками препинания DelSpacePunktMark.

После данных действий ваш текст будет иметь нужный вид.

word

Практически каждый в наше время работает с компьютером в той или иной степени. И самой популярной программой и самой востребованной, является текстовый редактор. Бесспорно, большинство работают с редактором Microsoft Office Word. Часто при копировании текста из интернета и последующей вставкой возникает большое количество пустых абзацев. И удалять их вручную довольно длинное дело. Давайте ускорим работу до нескольких кликов мышкой.

Способ 1. На всякий случай рассмотрим, как удалить пустые строки вручную. Для примера я взял несколько абзацев из Википедии.

delVoidParagraphs

Порядок действий:

1. Ставим курсор перед первой буквой текста или после последней (это важно для правильной работы).

2. Нажимаем на кнопку «Заменить», которая находится на «Главная».

word

3. В поле «Найти» пишем ^0013 . У поле «Заменить на» пишем ^p.

delVoidParagraphs

4. Остается нажать на кнопку «Заменить все».

word

Скриншот результата работы:

Способ 2 (рекомендуется). Данный способ предусматривает добавление макроса и последующее его использование.

Порядок действий:

1. Копируем макрос:

2. Идем в «Вид → Макросы → Макросы».

delVoidParagraphs

word

3. Даем имя макросу (любое, без пробелов) и нажимаем «Создать».

word

4. Откроется окно визуального редактора Microsoft Visual Basic. Там уже будет текст с именем вашего макроса (у меня на скриншоте видно, что имя макроса delVoidParagraphs):

delVoidParagraphs

5. Удаляем данный код и заменяем на скопированный ранее.

delVoidParagraphs

6. Идем у «Вид → Макросы → Макросы», находим наш добавленный (delVoidParagraphs) и нажимаем «Выполнить». После окончания работы макроса все пустые строки будут заменены

delVoidParagraphs

Примеры протестированы на Windows 7 и текстовом редакторе Microsoft Office Word 2016.

Читайте также: