В VBA, как вставить текст до и после стиля? - PullRequest
2 голосов
/ 02 октября 2011

Я пытался понять, как вставить текст до и после заданного стиля в Word, используя VBA.

В настоящее время я пробегаю документ сверху вниз, нахожу стиль и делаю вставки. Это отнимает много времени и не элегантно (если не сказать больше).

Должно быть возможно использовать объект Range и Selection.InsertBefore () а также Selection.InsertAfter () но я не могу заставить его работать.

Кто-нибудь знает, как это сделать?

Это второе редактирование, чтобы дать лучшее представление о том, что я ищу, но его нужно изменить, чтобы найти конкретный стиль:

Sub InsertBeforeMethod()
Dim MyText As String
Dim MyRange As Object
Set MyRange = ActiveDocument.Range
MyText = "<Replace this with your text>"
' Selection Example:
Selection.InsertBefore (MyText)
' Range Example: Inserts text at the beginning
' of the active document.
MyRange.InsertBefore (MyText)
End Sub

Другим способом для этого может быть использование подстановочных знаков и стиля, но когда я использую (*), он находит только один символ со стилем, а не всю строку.

Может быть, есть какой-нибудь способ заставить его найти всю строку? Тогда можно было бы сделать «заменить все» на «mytext1» \ 1 «mytext2»

1 Ответ

1 голос
/ 28 октября 2011

Word имеет функцию поиска и замены текста определенными стилями, поэтому вам даже не нужен макрос. Но если вы хотите автоматизировать его с помощью VBA, следующий пример кода вставляет foo перед любым кодом в стиле Heading 2 и добавляет bar впоследствии:

Selection.Find.ClearFormatting
Selection.Find.Style = ActiveDocument.Styles("Heading 2")
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = ""
    .Replacement.Text = "foo^&bar"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...