Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/100: Рейтинг темы: голосов - 100, средняя оценка - 4.53
2 / 2 / 0
Регистрация: 25.12.2009
Сообщений: 37
1

В выделенном фрагменте Word убрать все лишние пробелы.

16.06.2010, 17:18. Показов 19600. Ответов 12
Метки нет (Все метки)

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

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

Заранее спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2010, 17:18
Ответы с готовыми решениями:

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

Убрать все лишние пробелы между словами (оставить только по одному пробелу)
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 создайте макрос, который бы в выделенном фрагменте устанавливал...

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

12
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
16.06.2010, 18:00 2
Добавлено через 4 минуты
Цитата Сообщение от Dolgisha Посмотреть сообщение
Помогите решить задачу. Практически ничего не шарю в VBA.
Пытаюсь.
А шарить-то и не надо — просто запишите макрос! (В этом собственно вся фишка VBA.)

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

Не уверен, что в новом Word вы быстро найдёте вкладку "Разработчик" (на которой кнопка записи и находится), но в принципе программа — если это удалось — готова.

Выполнять её можно через альт-F8, а редактировать по альт-F11 (и заодно выполнять).
2
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
16.06.2010, 18:11 3
Visual Basic
1
2
3
4
5
6
7
8
Sub Макрос1()
   Dim XL As Object
 
   Set XL = CreateObject("Excel.Application")
   Selection.TypeText Text:=XL.Trim(Selection)
   XL.Quit
   Set XL = Nothing
End Sub
как текст в Ворде закинуть в переменную - не знаю, Selection - кривенько, но работает, главное здесь - поздняя привязка к Excel.
3
Заблокирован
17.06.2010, 20:15 4
Dolgisha,
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Sub m_1()
Dim myRange As Range
Set myRange = Selection.Range
With myRange.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "[ ^s]{2;}"
    .Replacement.Text = " "
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
    .Text = ""
    .Replacement.Text = ""
    .MatchWildcards = False
End With
Application.Browser.Target = wdBrowsePage
End Sub
Добавлено через 23 часа 55 минут
Dolgisha,
я ошибся, используй вот этот код для удаления лишних пробелов. Я как-то пробовал использовать код, указанный выше, но он удалял пробелы и в др. местах:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub m_1()
With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "[ ^s]{2;}"
    .Replacement.Text = " "
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchWildcards = True
    .Execute Replace:=wdReplaceAll
    .Text = ""
    .Replacement.Text = ""
    .MatchWildcards = False
End With
Application.Browser.Target = wdBrowsePage
End Sub
1
2 / 2 / 0
Регистрация: 25.12.2009
Сообщений: 37
17.06.2010, 21:53  [ТС] 5
Большое спасибо! Программа от Busine2009 подошла.
0
Заблокирован
18.06.2010, 06:35 6
Sasha_Smirnov,
хорошая идея, но она убирает также и знаки Табуляции (стрелочки) (может и ещё чего убирает, я только на Табуляции проверил).
0
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
18.06.2010, 08:45 7
Я пользовался просто
Visual Basic
1
2
    .Text = "  "
    .Replacement.Text = " "
Остальное всё так же из макроса
0
Заблокирован
18.06.2010, 09:21 8
Alex77755,
твой макрос надо запускать несколько раз, да и как ты узнаешь, что все лишние пробелы удалены? А если будут ещё встречаться и неразрывные пробелы?
0
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
18.06.2010, 11:12 9
Ну у меня он стоит в цикле (проверка на наличие сдвоенных пробелов)
Да я сейчас им и не пользуюсь. То пока дочка училась и скачивала документы непроавильно отформатированныё(пробелами) приходилось редактировать.
А что такое неразрывные пробелы я даже не знаю
1
5562 / 1368 / 150
Регистрация: 08.02.2009
Сообщений: 4,109
Записей в блоге: 30
18.06.2010, 18:15 10
Цитата Сообщение от аналитика Посмотреть сообщение
[VB]
Visual Basic
1
Selection.TypeText Text:=XL.Trim(Selection).
Хоть это и макрос, но Trim вроде бы лишь внешние пробелы убивает у Selection, а?

Цитата Сообщение от аналитика Посмотреть сообщение
как текст в Ворде закинуть в переменную - не знаю, Selection - кривенько, но работает, главное здесь - поздняя привязка к Excel.
Поотвязнее (в ворде) текст документа закидывается в пременную так (*барабанная дробь*):
Visual Basic
1
t = ActiveDocument.Content.Text
0
здесь больше нет...
3374 / 1672 / 184
Регистрация: 03.02.2010
Сообщений: 1,219
18.06.2010, 19:28 11
Хоть это и макрос, но Trim вроде бы лишь внешние пробелы убивает у Selection, а?
trim, который в VBA - да, но здесь же Excel прицепляется, для чего?
ибо это XL.Trim(.., правильнее (да, именно, правильнее) будет, конечно, XL.WorksheetFunction.Trim(..
а эта штука (СЖПРОБЕЛЫ) удаляет все лишние пробелы из всей строки.
см. рис (*барабанная дробь*):
Миниатюры
В выделенном фрагменте Word убрать все лишние пробелы.  
1
Заблокирован
19.06.2010, 10:33 12
Alex77755,
в твоём случае проще было бы использовать интерфейс Word, когда сдвоенные пробелы заканчиваются, то пишет, что произведено ноль замен.
Что-то ты совсем загнул.
Неразрывный пробел используется, чтобы в одной строке была определённая информация, например, ООО "Название компании", если надо, чтобы они были всегда вместе между ООО и "Название компании ставят не обычный пробел, а неразрывный (Ctrl + Shift + Пробел).

Добавлено через 4 минуты
аналитика,
я чего-то не понимаю может быть, но при чём здесь в этой теме Excel?
0
11517 / 3803 / 681
Регистрация: 13.02.2009
Сообщений: 11,221
19.06.2010, 12:02 13
Busine2009,
Может быть.
Это кусок из макроса.
Первое, что пришло тогда в голову.
Кроме удаления лишних пробелов в макросе было ещё несколько функций. И на панели была кнопочка. Поэтому мне было проще пользоваться моей кнопочкой чем несколькими функциями ворда по очереди
За информацию о неразрывном пробеле - спс. Век живи - век учись
0
19.06.2010, 12:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2010, 12:02
Помогаю со студенческими работами здесь

В выделенном фрагменте преобразовать все поля типа eq в текст
Добрый вечер, уважаемые форумчане! Срочно нужны макросы для Word. Суть работы макросов: 1. В...

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

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

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru