返回后格式化文本段和:在文本中
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 的时间戳格式