Приветствую участников форума!
Пожалуйста, помогите создать макрос для удаления переносов строк, некоторых знаков (-) и проставления пробелов между словами после удаления переноса.
Конкретно.
81 текст текст , текст ; тек-
ст , текст (текст текст
текст текст текст те
кст); текст , текст , текст
текст;
82 текст . текст текст ,
текст текст ; текст
текст (текст. текст , те
кст);
Логика такая. Если следующая строка НЕ начинается с цифр, то между текущей и предыдущей строкой необходимо удалить перенос; если после удаления переноса между частями слова стоит дефис - удалить его; если два слова оказались склеены - поставить пробел.
Прошу, помогите! Задачка горит.
[вложение удалено администратором]
Я так понимаю, архитектура макроса дб примерно такая:
цикл перебора строк {
если строка НЕ начинается с цифры {
удалить перенос между ней и верхней строкой,
если между словами есть "-" или " - ", то удалить это,
если слова склеились, то поставить пробел между ними
}
}
В ворде можно делать некоторые действия с помощью Найти и заменить. Может быть этого будет достаточно.
То же самое можно сделать из самого ворда, используя Найти и заменить с использованием галочки "Подстановочные знаки".
Макрос
Sub макрос()
'1. Замена сочетания пробел + спецдефис на спецдефис.
With ActiveDocument.Range.find
.text = "( )(^0173)"
.Replacement.text = "\2"
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
'2. Удаление сочетания спецдефис + знак абзаца.
With ActiveDocument.Range.find
.text = "^0173^13"
.Replacement.text = ""
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
'3. Замена сочетания знак абзаца + нецифра на пробел и найденную нецифру.
With ActiveDocument.Range.find
.text = "(^13)([!0-9])"
.Replacement.text = " \2"
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
'4. Сообщение.
MsgBox "Готово.", vbInformation
End Sub
Благодарю Вас! Вы так выручили меня!