Работа с несколькими объектами Selection.Range в Microsoft Word - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь окружить весь выделенный текст на странице кавычками, но когда я запускаю код, это влияет только на последний выбор на странице.Мой код также выделяет весь выделенный текст, и эта часть работает нормально.Мой код выглядит следующим образом:

With Selection.Range
    Selection.Range.Bold = wdToggle
    .Text = Chr(34) & .Text & Chr(34)
End With

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Попробуйте:

Sub Demo()
Application.ScreenUpdating = False
Selection.Font.Shading.BackgroundPatternColor = wdColorAqua
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = ""
    .Replacement.Text = ""
    .Font.Shading.BackgroundPatternColor = wdColorAqua
    .Format = True
    .Forward = True
    .Wrap = wdFindStop
    .Execute
  End With
  Do While .Find.Found
    .Font.Shading.BackgroundPatternColor = wdColorAutomatic
    If .Characters.Last = vbCr Then .End = .End - 1
    .InsertBefore Chr(147) 'Chr(34)
    .InsertAfter Chr(148) 'Chr(34)
    .Collapse wdCollapseEnd
    .Find.Execute
  Loop
End With
Application.ScreenUpdating = True
End Sub

Примечание: Я использовал умные кавычки, но вы можете использовать прямые кавычки, если хотите.

0 голосов
/ 18 мая 2018

Вы можете сделать это следующим образом: https://stackoverflow.com/a/46106637/3451115

Это работает, только если вы не используете блики по всему документу.Идея пришла отсюда: https://stackoverflow.com/a/36413118/3451115

В двух словах, вы используете блики в качестве временного маркера для поиска и постобработки (из-за отсутствия лучшего выражения).Поиск бликов позволяет циклически проходить через то, что было выбрано.

...