返回后格式化文本段和:在文本中

Posted

技术标签:

【中文标题】返回后格式化文本段和:在文本中【英文标题】:Format text segments after returns and : in text 【发布时间】:2020-12-03 10:27:41 【问题描述】:

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

作为我们的语音到文本协议的输出,我们得到一个成绩单。

VBA 脚本应该在每次 (return) 之后将文本格式化为粗体,并且 (:) 之后的文本在下一次 return 之前不加粗。

示例:发言人 1 问题 1: 回答回答回答发言人 1 问题 2:回答回答回答

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

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

【问题讨论】:

最终文本版本的示例会有所帮助。目前尚不清楚您的粗体应该持续多长时间。 嘿,所以示例是关于他的: Speaker1 Question1: Answer Answer Answer Speaker1 Question2: Answer Answer Answer 在示例中,演讲者和问题应该是粗体,而答案不应该是粗体。不幸的是,我猜格式化规则不适用于 cmets。 您可以随时编辑您的问题。我第一次给你做,你可以验证它是否正确。如果没有,您可以自己编辑。 【参考方案1】:

这应该加粗 (return)(实际上是换行符或回车)和冒号 (:) 之间的所有内容

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

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

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

【讨论】:

非常感谢,我们不会找到我现在看到的解决方案。非常感谢。

以上是关于返回后格式化文本段和:在文本中的主要内容,如果未能解决你的问题,请参考以下文章

在格式化文本中粘贴带有换行符/返回的文本

前端使用富文本编辑器输入内容回显到页面带格式

如何在 Vuetify 文本字段中更改 type=date 的时间戳格式

在Excel中如何将数字格式批量转换为文本格式,并且保留二位小数?

Javascript选择文本并格式化textarea

怎样在word2007中默认设置粘贴无格式文本