Word VBA - поиск текста между разделителями и преобразование в нижний регистр - PullRequest
1 голос
/ 03 октября 2009

Я хотел бы найти текст, который находится между символами <и>, а затем превратить любой найденный текст в «нормальный» регистр, где первая буква слова пишется с большой буквы. Вот что у меня есть:

Function findTextBetweenCarots() As String

Dim strText As String

With Selection
    .Find.Text = "<"  ' what about <[^0-9]+>  ?
    .Find.Forward = True
    .Find.Wrap = wdFindContinue
End With

Selection.Find.Execute


 ' Application.Selection. ' how do I get the text between the other ">"?
    findCarotSymb = Application.Selection.Text

End Function

Или есть лучший способ сделать это? Я также подошел к проблеме, используя библиотеку VBScript Regex 5.5, которая работала с простыми документами, но не с определенными документами со сложными таблицами. Например, пытаясь просто выделить текст (для простоты):

 Sub BoldUpperCaseWords()

  Dim regEx, Match, Matches
  Dim rngRange As Range

  Set regEx = New RegExp
  regEx.Pattern = "<[^0-9]+>"
  regEx.IgnoreCase = False
  regEx.Global = True

  Set Matches = regEx.Execute(ActiveDocument.Range.Text)

  For Each Match In Matches

     ActiveDocument.Range(Match.FirstIndex, Match.FirstIndex + Len(Match.Value)).Bold = True

  Next

End Sub

не будет работать в документе с таблицами. Фактически, он даже не выделил бы правильный текст (текст между <>. Это заставляет меня поверить, что у меня есть более широкая проблема, которую я пропускаю.

1 Ответ

1 голос
/ 03 октября 2009

Я не могу проверить ваш код, но попробуйте это регулярное выражение

regEx.Pattern = "<[^0-9<>]+>"

Ваше регулярное выражение будет соответствовать "<foo><bar>" всей строке.
Приведенное выше регулярное выражение будет соответствовать только <foo>, затем <bar> и т. Д.

...