1

Тема: Замена каждого третьего пробела на неразрывный пробел

Здравствуйте!
Подскажите пожалуйста, как в тексте заменить каждый третий пробел на неразрывный пробел? Возможно ли это делать с помощью макроса?

2

Re: Замена каждого третьего пробела на неразрывный пробел

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

Удобной и приятной работы в Word!
Перевести спасибо на Яндекс кошелёк - 41001162202962; на WebMoney - R581830807057.

3

Re: Замена каждого третьего пробела на неразрывный пробел

Написал макрос, но как в него добавить счетчик пробелов?
Sub Замтретьегопробнанеразрывный()
With ActiveDocument.Range.Find
.Text = "^0032"
.Replacement.Text = "^s"
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

4

Re: Замена каждого третьего пробела на неразрывный пробел

заменила неразрывный пробел на обратную кавычку (для наглядности )
в файле --нормальный пробел

Нам для объемного`проекта требуются переводчики`с русского на`турецкий язык. 
Нужен`качественный перевод, никакого`машинного перевода! Это`судебные документы. 
Ставка`6$/1800ЗБП 
Выплата в`течении месяца после`сдачи (после проверки`заказчиками) 
Прошу указать`возможный недельный объем,`в т.ч. при`наличии коллег и`работе в группе`
Укажите онлайн контакты`(скайп, аську, мэйл`агент), наличие диплома`переводчика, опыт работы`в данной тематике
Sub w130408_1123()
Dim pr As Paragraph
Dim k1, j1, j2, j2k, s1
j1 = 0
k1 = 0        '' если счет по документу

For Each pr In Word.ActiveDocument.Paragraphs
j1 = j1 + 1
Debug.Print j1;
''k1=0 '' если счет в каждом параграфе
j2 = 0
j2k = pr.Range.Characters.Count
Do While j2 < j2k
j2 = j2 + 1
'Debug.Print Asc(c1), c1
s1 = pr.Range.Characters(j2).Text
If s1 = ChrW(160) Then
pr.Range.Characters(j2).Text = " "
s1 = " "
End If
If s1 = " " Then
k1 = k1 + 1
If k1 = 3 Then
pr.Range.Characters(j2).Text = ChrW(160)

k1 = 0
End If
End If
Loop

Next pr
Debug.Print Now
End Sub
Post's attachments

пробел.zip 14.7 Кб, 5 скачиваний с 2013-04-08 

You don't have the permssions to download the attachments of this post.

5

Re: Замена каждого третьего пробела на неразрывный пробел

Ок, все работает! Благодарю!
Единственный момент - возможно ли чтобы макрос применялся только к выделенному фрагменту текста?
В этом случае, макрос может так начинаться?
Sub w130408_1123()
Dim myRange As Range
Set myRange = Selection.Range
With myRange.Find
Dim pr As Paragraph
Dim k1, j1, j2, j2k, s1
j1 = 0
k1 = 0        '' если счет по документу
.......и далее остальное ....
Next pr
Debug.Print Now
End Sub

6

Re: Замена каждого третьего пробела на неразрывный пробел

''For Each pr In Word.ActiveDocument.Paragraphs
For Each pr In Selection.Paragraphs