在 returns 和 : 之后格式化文本段

Format text segments after returns and : in text

我们有一系列文档需要格式化以提高可见性。

作为我们语音到文本协议的输出,我们得到了一份文字记录。

VBA 脚本应该在每个 (return) 之后将文本格式化为粗体,并且 (:) 之后的文本在下一个 return.[=12= 之前不加粗]

示例:
Speaker1 Question1: Answer Answer Answer
Speaker1 Question2: Answer Answer Answer

这在函数的第一部分没有按预期工作。

Sub BoldGenerator()

    ' BoldGenerator Macro
    Selection.WholeStory

    'Make each .Method belong to Selection.Find for readability
    With Selection.Find
        'Set search criteria for break font
        .Text = "^l"
        'Find next occurrence
        .Execute
        
        Do While .Found
        Selection.Text = Selection.Font.Bold = True
        .Execute
        Loop
        
    End With
    
    '
    Call BoldGenerator
End Sub

这应该将 (return)(实际上是换行或回车 return)和冒号 (:)

之间的所有内容加粗

这并不容易 VBA。 VBA 中使用了非原生的正则表达式,因此我们需要从 VBScript 库中获取它们。我们使用正则表达式来查找所有在回车 return 之后开始并以冒号结束的实例。正则表达式无法更改格式(变为粗体)。所以我们也需要使用 .Find 方法。我们再次找到之前找到的内容,但这次我们将其设为粗体。

你会看到第一个实例不会变成粗体,因为它没有在回车后开始return。

Sub BoldGenerator()

Dim RE As Object
Dim REMatches As Object
Dim mch As Object

Selection.HomeKey wdStory
Selection.WholeStory

Set RE = CreateObject("vbscript.regexp")
With RE
  .Global = True
  .Pattern = "\r(.+?:)"
End With
Set REMatches = RE.Execute(Selection.Text)

If REMatches.Count > 0 Then
  Selection.HomeKey wdStory
    With Selection.Find
      .ClearFormatting
      .Forward = True
      .Format = False
      .MatchCase = True
      For Each mch In REMatches
        .Text = mch
        .Execute
        Selection.Font.Bold = True
        Selection.MoveRight wdCharacter
      Next
    End With
  Selection.HomeKey wdStory
End If

Set RE = Nothing
Set REMatches = Nothing
Set mch = Nothing

End Sub