Выделить текст между скобками (Word)

Программирование на Visual Basic for Applications
MaryM
Начинающий
Начинающий
 
Сообщения: 12
Зарегистрирован: 01.06.2005 (Ср) 22:39
Откуда: Москва

Выделить текст между скобками (Word)

Сообщение MaryM » 13.04.2006 (Чт) 11:21

Возникла такая задача - нужно выделить текст между двумя квадратными скобками. Как делать - ума не приложу. Между скобками может быть о-очень длинное слово, а может быть и совсем короткое. Нужно то, что стоит между скобками, вырезать и вставить в канец абзаца (с этой задачей я сама кое-как справилась).
И еще вопрос, как сделать так, чтобы он нашел Все скобки, вырезал из них Все слова и вставил в концы всех абзацев?
Может, кто поможет? :(
Макросы необходимы каждому писателю

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 13.04.2006 (Чт) 11:32

Код: Выделить всё
    Dim i As Integer
   
    For i = 1 To Words.Count - 2
        If Words(i) = "[" And Words(i + 2) = "]" Then
            Words(i + 1).Select
          ..............
        End If
    Next

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 13.04.2006 (Чт) 11:50

Не. Это невалидно.

Искать и выделять все слова в [] надо так:

Код: Выделить всё
End Sub
Sub doFindBracedWords()
    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "\[*\]"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True
    End With
    Do While Selection.Find.Execute
        Selection.MoveStart wdCharacter, 1
        Selection.MoveEnd wdCharacter, -1
        Debug.Print Selection.Range.Text
        Selection.Collapse wdCollapseEnd
    Loop
End Sub


Вот. Ну а как вставлять в конец абзаца, это уже второй вопрос :)

inq
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 185
Зарегистрирован: 12.04.2006 (Ср) 7:50
Откуда: 78

Сообщение inq » 13.04.2006 (Чт) 12:25

Это невалидно

RayShade, чем же? Разве что проверку на Words>3 еще поставить

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 13.04.2006 (Чт) 13:15

Медленно очень :)

Перебор коллекции Words - это самый медленный способ.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 13.04.2006 (Чт) 14:54

RayShade
А вот тут он раз в 10 быстрее ;)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 13.04.2006 (Чт) 15:04

GSerg

Да, но новичку я думаю, непонятно? Хотя....


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 31

    TopList