Word VBA - 查找一个文本字符串,其中一个单词(并非字符串中的所有单词)具有特定的样式或格式
Word VBA - find a text string where a one word (not all words in string) have a particular style or format
我试图构建一些代码来搜索文本中的一个词是特定格式或样式的文本。例如,我想搜索文本“Hello world, all is good”,但只搜索到“all”一词为粗体的实例。
我想搜索前几个词“Hello world,”;折叠 selection,在接下来的三个字符中搜索粗体字“all”;折叠 selection(如果为真)然后在下一位搜索单词“is good”。这将导致用粗体词识别整个短语,但它看起来确实效率低下并且不是很灵活。此外,为了 select 整个句子,我必须编写代码将 selection 移回开头并向前扩展 selection。然后我需要重置搜索以从该位置继续前进。
是否有一些 easy/easier/more 优雅的方法来搜索字符串中只有一个单词具有特定属性(如粗体)的字符串?我特别希望搜索忽略相关词不是粗体的短语实例。
我花了几个小时搜索 google 和 stackflow,但在这方面找不到任何东西。
我没有发布代码,因为我不太擅长编写代码,我真的很想了解是否有 flexible/elegant 方法来做我想做的事情。我在上面解释的不灵活的根是如此不灵活,我不愿意费心编写一些东西。
谢谢
杰里米
我会使用的方法是搜索字符串,如果找到,则在字符串中搜索单词。这是一个例子。
Sub Demo()
Dim StringRange As Range
Dim MatchFound As Boolean
With ActiveDocument.Range.Find
' The string to find
.Text = "Hello world, all is good"
' Search the document
Do While .Execute
' Capture the string
Set StringRange = .Parent.Duplicate
With .Parent.Duplicate.Find
' The word to find
.Text = "all"
.Font.Bold = True
' Search the string
If .Execute Then
MatchFound = True
StringRange.Select
If MsgBox("Match found. Continue searching?", vbQuestion + vbYesNo) = vbNo Then
Exit Sub
End If
End If
End With
Loop
If MatchFound Then
MsgBox "Finished searching document", vbInformation
Else
MsgBox "No match found", vbInformation
End If
End With
End Sub
我试图构建一些代码来搜索文本中的一个词是特定格式或样式的文本。例如,我想搜索文本“Hello world, all is good”,但只搜索到“all”一词为粗体的实例。
我想搜索前几个词“Hello world,”;折叠 selection,在接下来的三个字符中搜索粗体字“all”;折叠 selection(如果为真)然后在下一位搜索单词“is good”。这将导致用粗体词识别整个短语,但它看起来确实效率低下并且不是很灵活。此外,为了 select 整个句子,我必须编写代码将 selection 移回开头并向前扩展 selection。然后我需要重置搜索以从该位置继续前进。
是否有一些 easy/easier/more 优雅的方法来搜索字符串中只有一个单词具有特定属性(如粗体)的字符串?我特别希望搜索忽略相关词不是粗体的短语实例。
我花了几个小时搜索 google 和 stackflow,但在这方面找不到任何东西。
我没有发布代码,因为我不太擅长编写代码,我真的很想了解是否有 flexible/elegant 方法来做我想做的事情。我在上面解释的不灵活的根是如此不灵活,我不愿意费心编写一些东西。
谢谢 杰里米
我会使用的方法是搜索字符串,如果找到,则在字符串中搜索单词。这是一个例子。
Sub Demo()
Dim StringRange As Range
Dim MatchFound As Boolean
With ActiveDocument.Range.Find
' The string to find
.Text = "Hello world, all is good"
' Search the document
Do While .Execute
' Capture the string
Set StringRange = .Parent.Duplicate
With .Parent.Duplicate.Find
' The word to find
.Text = "all"
.Font.Bold = True
' Search the string
If .Execute Then
MatchFound = True
StringRange.Select
If MsgBox("Match found. Continue searching?", vbQuestion + vbYesNo) = vbNo Then
Exit Sub
End If
End If
End With
Loop
If MatchFound Then
MsgBox "Finished searching document", vbInformation
Else
MsgBox "No match found", vbInformation
End If
End With
End Sub