2 / 2 / 0 Регистрация: 25.12.2009 Сообщений: 37 |
|
1 |
|
16.06.2010, 17:18. Показов 17999. Ответов 12
Помогите решить задачу. Практически ничего не шарю в VBA. В выделенном фрагменте русскоязычного документа текстового процессора Word убрать все лишние пробелы между словами (оставить только по одному пробелу). Заранее спасибо!
0 |
5561 / 1367 / 150 Регистрация: 08.02.2009 Сообщений: 4,107 Записей в блоге: 30 |
|
16.06.2010, 18:00 |
2 |
Добавлено через 4 минуты
Помогите решить задачу. Практически ничего не шарю в VBA. Пытаюсь. Действия (после нажатия кнопки «Начать запись») таковы:
Не уверен, что в новом Word вы быстро найдёте вкладку «Разработчик» (на которой кнопка записи и находится), но в принципе программа — если это удалось — готова. Выполнять её можно через альт-F8, а редактировать по альт-F11 (и заодно выполнять).
2 |
аналитика здесь больше нет… 3372 / 1670 / 184 Регистрация: 03.02.2010 Сообщений: 1,219 |
||||
16.06.2010, 18:11 |
3 |
|||
как текст в Ворде закинуть в переменную — не знаю, Selection — кривенько, но работает, главное здесь — поздняя привязка к Excel.
3 |
Заблокирован |
||||||||
17.06.2010, 20:15 |
4 |
|||||||
Dolgisha,
Добавлено через 23 часа 55 минут
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 |
Alex77755 11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
||||
18.06.2010, 08:45 |
7 |
|||
Я пользовался просто
Остальное всё так же из макроса
0 |
Заблокирован |
|
18.06.2010, 09:21 |
8 |
Alex77755,
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
18.06.2010, 11:12 |
9 |
Ну у меня он стоит в цикле (проверка на наличие сдвоенных пробелов)
1 |
Sasha_Smirnov 5561 / 1367 / 150 Регистрация: 08.02.2009 Сообщений: 4,107 Записей в блоге: 30 |
||||||||
18.06.2010, 18:15 |
10 |
|||||||
[VB]
Хоть это и макрос, но Trim вроде бы лишь внешние пробелы убивает у Selection, а?
как текст в Ворде закинуть в переменную — не знаю, Selection — кривенько, но работает, главное здесь — поздняя привязка к Excel. Поотвязнее (в ворде) текст документа закидывается в пременную так (*барабанная дробь*):
0 |
здесь больше нет… 3372 / 1670 / 184 Регистрация: 03.02.2010 Сообщений: 1,219 |
|
18.06.2010, 19:28 |
11 |
Хоть это и макрос, но Trim вроде бы лишь внешние пробелы убивает у Selection, а? trim, который в VBA — да, но здесь же Excel прицепляется, для чего? Миниатюры
1 |
Заблокирован |
|
19.06.2010, 10:33 |
12 |
Alex77755, Добавлено через 4 минуты
0 |
11482 / 3773 / 677 Регистрация: 13.02.2009 Сообщений: 11,145 |
|
19.06.2010, 12:02 |
13 |
Busine2009,
0 |
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщений [ 4 ]
1 08.02.2014 08:33:36
- iasmer
- рядовой
- Неактивен
- Зарегистрирован: 09.12.2010
- Сообщений: 7
Тема: VBA: как удалить лишние пробелы
Возможно, кто-то укажет аналог WorksheetFunction.Trim Экселя в VBA Ворда (т.е. удаление всех лишних пробелов слева — права — множественных внутри текста)?
пока пользую следующую конструкцию:
SAY = Replace(Trim(SAY), » «, » «, 1, -1, 1) ‘ в экселе 2 строки заменить на
SAY = Replace(SAY, » «, » «, 1, -1, 1) ‘ SAY = Worksheetfunction.Trim(SAY)
2 Ответ от aap77 09.02.2014 21:57:08
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
Re: VBA: как удалить лишние пробелы
В Word тоже самое:
s = " Word "
s = Trim(s) ' Результат "Word"
3 Ответ от iasmer 10.02.2014 09:38:53
- iasmer
- рядовой
- Неактивен
- Зарегистрирован: 09.12.2010
- Сообщений: 7
Re: VBA: как удалить лишние пробелы
Спасибо за Ваш ответ. Я вероятно плохо раскрыл вопрос. Повторюсь. В экселе есть 2 варианта Трима 1 — Trim() в VBA; 2 — Worksheetfunction.Trim(). Различаются тем, что 1-й отсекает пробелы слва-права (как в Вашем примере), 2-й (функция листа экселя, в рус. нотации =СЖПРОБЕЛЫ()) — обрабатывает повторы пробелов внутри текста, оставляя одинарные.
Вопрос был о наличии/отсутствии в VBA Ворда 2-го варианта функции.
Можно и цикл написать, но исходно не верилось, что в Экселе 1 оператор, а в Ворде — 6
Excel:
s = Worksheetfunction.Trim(s)
Word:
s = trmi(s)
1:
if instr(1,s,» «,1) then
s = Replace(s, » «, » «, 1, -1, 1)
goto 1
endif
4 Ответ от aap77 10.02.2014 10:41:50
- aap77
- генерал-полковник
- Неактивен
- Зарегистрирован: 12.09.2011
- Сообщений: 925
- Поблагодарили: 243
- За сообщение: 1
Re: VBA: как удалить лишние пробелы
Изначально Word использует только функции встоенные в VBA. У него нет личных функций, как у Excel. Функция СЖПРОБЕЛЫ() на самом деле это не один оператор, а процедура содержащая также кучу операторов. Что могу посоветовать.
1. Откройте редактор VBA в Word.
2. Выберете шаблон Normal.
3. Вставьте в него модуль и назовите его WordFunctions.
4. Вставьте в него макрос:
Sub Trim()
'
' Удаление пробелов
'
Selection.WholeStory
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = _
"([!^0032^0160])([^0032^0160])([^0032^0160]{1;})([!^0032^0160])"
.Replacement.Text = "124"
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "([!^0032^0160])([^0032^0160]{1;})([^0013])"
.Replacement.Text = "13"
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = "([^0013])([^0032^0160]{1;})([!^0032^0160])"
.Replacement.Text = "13"
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll
End Sub
5. Сохранитесь.
Теперь можете в своих кодах писать:
Далее в модуль WordFunctions можно будет добавлять другие функции и процедуры, а потом обращаться к ним.
Excel построен по томуже принципу, только разработчики заранее внедрили в него объект Worksheetfunction, с кучей дополнительных функций.
Сообщений [ 4 ]
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Похожие темы
- Лишние пробелы при связи с Excel
- Нашёл бесплатную программку-Убирает лишние пропуски,пробелы и переносы
- Удалить лишние точки и номера страницы
- Word как удалить текст в файле, закрыть и удалить макросом файл?
- Лишние абзацы при связи с excel
- Лишние элементы структуры в документе Word2007.
- Лишние элементы в списке перекрестных ссылок
- Пробелы
VBA: как удалить лишние пробелы
Любую работу можно сделать несколькими различными способами. В силах человека выбрать наиболее удобный для себя, оптимальный и рациональный. Наш сайт о Microsoft Office Word даст ответ про: как word убрать символ абзац.
Если говорить о работе с текстами: написании рефератов, дипломов, статей, редактировании различных документов и оформлении презентаций, то Microsoft Word дает массу возможностей для этого. Наш сайт о Microsoft Office Word даст ответ про: как в ворде убрать растянутость слов.
Познакомиться с ними, расширить свои познания о программе или поделиться секретами и хитростями с другими пользователями вы можете на форуме Ворд Эксперт. На портале о Microsoft Office Word вы узнаете про: шаблоны для фирменного бланка.
Здесь собрана основная информация и ответы на наиболее популярные вопросы по работе с приложением. Например, о создании макросов, о колонтитулах, удалении лишних пробелов. Наш сайт о Microsoft Office Word даст ответ про: как сделать так. чтобы фигура в тексте не съезжала в ворде.
В основных разделах можно обсудить настройки самого Ворда и способы работы с текстом в различных версиях программы. На портале о Microsoft Office Word вы узнаете про: сохранить файл ворд в другом формате?.
Подфорум «Автоматизация» предлагает освоить технику создания макросов и задания шаблонов для различных операций и функций. На портале о Microsoft Office Word вы узнаете про: как убрать сноску ворд 2010.
Здесь же на форуме можно найти готовые решения, разнообразные шаблоны, макросы для редактирования таблиц, оглавлений и многое другое. На портале о Microsoft Office Word вы узнаете про: как сканировать документы в ворд 2007.
Возможно и оставить заявку, описав свою проблему в соответствующем подразделе. Если у вас есть какие –то оригинальные идеи и решения – форум лучшее место поделиться ими с другими пользователями Ворда. На портале о Microsoft Office Word вы узнаете про: ворд как переходить на новую строку.
MS Word: «УБРАТЬ_ЛИШНИЕ_ПРОБЕЛЫ» |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
I created a macro for removing all whitespace in a string, specifically an email address. However it only removes about 95% of the whitespace, and leaves a few.
My code:
Sub NoSpaces()
Dim w As Range
For Each w In Selection.Cells
w = Replace(w, " ", "")
Next
End Sub
Things I have tried to solve the issue include:
~ Confirmed the spaces are indeed spaces with the Code function, it is character 32 (space)
~ Used a substitute macro in conjuction with the replace macro
~ Have additional macro utilizing Trim function to remove leading and trailing whitespace
~ Made a separate macro to test for non-breaking spaces (character 160)
~ Used the Find and Replace feature to search and replace spaces with nothing. Confirmed working.
I only have one cell selected when I run the macro. It selects and goes through all the cells because of the Selection.Cells part of the code.
A few examples:
1 STAR MOVING @ ATT.NET
322 TRUCKING@GMAIL.COM
ALEZZZZ@AOL. COM.
These just contain regular whitespace, but are skipped over.
Автор Game, 22 марта 2020, 07:16
В Word файле есть текст и таблицы. Нужно убрать из документа все лишние пробелы, в т.ч. и в таблицах.
Пример
Было:
Иванов Иван Иванович, 2000 г.р. Живет на планете Земля
Стало: Иванов Иван Иванович, 2000 г.р. Живет на планете Земля
Администратор
- Administrator
- Сообщения: 2,252
- Записан
Sub Макрос()
With ActiveDocument.Range.Find
.Text = » {2;}»
.Replacement.Text = » «
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub
[свернуть]
.Text = » {2;}» — это регулярное выражение? VBA Word нормально понимает их? Как его понять? Нужно найти текст, в котором есть больше двух пробелов?
В Excel есть функция Trim, которая удаляет лишние пробелы. В Word такой функции нет?
Администратор
- Administrator
- Сообщения: 2,252
- Записан
Да, в ворде можно использовать регулярные выражения.
{2;}
Перед левой фигурной скобкой находится пробел. Это означает, что нужно искать пробел.
Это {2;} означает: найти два и более символа, который находятся перед этим выражением. В данном случае: найти два и более пробела.
В ворде нет готового инструмента для удаления лишних пробелов: нужно изобретать. Например, можно использовать метод «Range.Find».
- Форум по VBA, Excel и Word
-
►
Word -
►
Макросы в Word -
►
Word VBA Макросы: Как удалить лишние пробелы?