| imho.ws |
![]() |
|
|
|
# 1 |
|
Guest
Сообщения: n/a
|
макрос на Visual Basic
Помогите, пожалуйста, написать макрос для Word.
Мне нужно, чтобы макрос выполнял следующие действия: если после курсора стоит знак абзаца - опуститься на одну строку вниз если после курсора стоит любой другой символ жирным шрифтом - перейти в конец строки, сделать абзац, опуститься на одну строку вниз если после курсора стоит любой другой символ обычным шрифтом - перейти в начало строки, вставить два пробела, перейти в конец строки, удалить символ перед курсором, сделать абзац. Необходимо, чтобы макрос обработал таким образом весь документ. Вот, что я написал: Set myRange = ActiveDocument.Range(Start:=Selection.Start, _ End:=ActiveDocument.Content.End) Do Set char = Selection.Characters(1) If char.Text = Chr$(13) Then Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove ElseIf char.Bold = True Then Selection.EndKey Unit:=wdLine, Extend:=wdMove Selection.TypeParagraph Selection.MoveDown Unit:=wdLine, Count:=1, Extend:=wdMove ElseIf char.Bold = False Then Selection.HomeKey Unit:=wdLine, Extend:=wdMove Selection.TypeText Text:=" " Selection.EndKey Unit:=wdLine, Extend:=wdMove Selection.TypeBackspace Selection.TypeParagraph End If Loop Until myRange.EndOf = True End Sub У меня не получается сделать цикл, чтобы макрос повторял эти действия до конца документа. |
|
|
# 2 |
|
Guest
Сообщения: n/a
|
Предпоследняя строка у тебя какая-то неподходящая:
Loop Until myRange.EndOf = True Мне кажется надо: Loop Until myRange.End = False Т. е. не метод EndOf, который возвращает смещение, а свойство конца диапазона. Еще я подозреваю, что задача сформулированна не совсем удачно. По виду похоже, что тебе надо поправить некоторый список (например отсканированный словарь), так что бы каждый абзац начинался с вводного слова (полужирное начертание), а содержание абзаца выделялось отсупом. Если так, то эту задачу можно решить проще через глобальный поиск-замену, и макрос будет работать в разы быстрее. |