Обработка предлогов в Ворде
Спасибо за возможные подсказки.
Dim i As Long, oldSym As String * 1
Dim txt As Range, w
Set txt = Selection.Range
For i = 1 To txt.Words.Count
If txt.Words(i).Text Like "?? " Or _
txt.Words(i).Text Like "? " Then
If i > 1 Then 'Чтоб не было ошибки обращения к несуществующему слову
'Если последний символ предыдущего слова был равен пробелу...
If Asc(oldSym) = 32 Then
'... заменяем его на неразрывный пробел
Set w = txt.Words(i - 1)
w.Characters(Len(w.Text)).Text = Chr$(160)
End If
End If
End If
oldSym = Right$(txt.Words(i), 1)
Next i
1. Неразрывные пробелы только в "Заголовке 4" и больше нигде?
2. Другие одно-двухбуквенные слова ("и", "а", "я", "ты" и т.п.) тоже обрастут неразрывными пробелами. Это нормально? Или надо только предлоги и частицы?
3. Ты точно ничего не забыл упомянуть? :)
Переверстывает в Ворде? А вроде ничего не видно... Или это в фоне происходит? Тогда надо бы это дело отключить (если оно отключается, конечно).
Ответы:
1. Редактор заставляет переносить предлоги только в заголовках 4 уровня.
2. "Я", "ты", "он", "она", "вместе целая страна" :p .... Таких слов в Заголовках 4 уровня не встречается (текст довольно деловой направленности). Т.е. можно смело обрабываться ВСЕ одно- и двух-. Правда РФ нельзя отрывать (!), нельзя отрывать кг, т, км (т.е. единицы измерения и ден. знаки (руб, долл,). Т.е. в перечисленных случаях надо неразвный пробел ставить как раз ДО обрабатываемого слова. Но это уже можно сделать на сл. этапе. Сначала бы справиться просто с предлогами.
(Вот вроде приаттачился test_text.doc)
Придумал новую отмазку: работа уж больно тяжелая :mad: , руки сами крепчают... :D (нас... грузят, а мы крепчаем):mad: