Excel VBA在word中查找和替换。将数字和单词之间的空格替换为不间断空格
我希望你能帮助我。 我有三个问题:Excel VBA在word中查找和替换。将数字和单词之间的空格替换为不间断空格,excel,vba,search,replace,ms-word,Excel,Vba,Search,Replace,Ms Word,我希望你能帮助我。 我有三个问题: 在下面的代码中,我试图用“\1^s\3”替换“([0-9])()([A-Za-zÆèèèèè”)但结果总是以\1\3^2结尾,或者示例“3A”将变为“3A(不间断空间)”,但我想要的是“3(不间断空间)A” 我有没有办法把([A-Za-zÆæØå])变成一个动态的词?我有一个我想用的单词列表。例如“3毫克”至“3毫克(非破损空间)或“1公斤”至“1公斤(非破损空间) 是否有任何方法可以进行搜索和替换,其中我只将“空格”替换为“非中断空格”,而不是通配符。上面的
亲爱的蒂莫西,非常感谢你抽出时间来看看我的问题。对于问题1,我已将替换项改为“\1^2\3”,但我遇到了相同的问题。如果我在“3A”上使用代码,它将变成“3A(不间断空格)”,但我想要的是“3(不间断空格)A”。@Casper-我建议你重新阅读我答案的第1点。哦,对不起,我的意思是“\1^s\2”。现在,我的完整搜索和替换代码是:对于wordDoc.StoryRanges中的每个myStoryRange,使用myStoryRange.Find.MatchCase=True.MatchWholeWord=True.MatchWildcards=True.Text=“[0-9])([A-Za-zÆØå]).Forward=True.MatchAllWordForms=False.MatchSoundsLike=False.Replacement.Text=“\1^s\3”。执行Replace:=wdReplaceAll以Next结尾myStoryRange@Casper-我在O365中进行了测试,效果非常好。但是我不使用音轨变换,所以这可能是你问题的原因。非常感谢Timothy Rylatt的帮助,一定是你说的音轨变换。如果我在“3E”上测试“\1AAA\3”,我会得到“3eAAA”;“\1AAAA\3”给出结果“3eAAA”;“\1AAAA\3”得到结果“3AeAAA”。不知道我能用它做什么,但很奇怪。我必须支持你在第三章中提出的解决方案。
Sub NonBreakingSpace(ByVal wordApp As Object, ByVal wordDoc As Object, ByVal myStoryRange As Object)
'With Worksheets("sheet1")
'For Each cell In Range("A3:A" & .Cells(.Rows.Count, "A").End(xlUp).Row)
' Find1 = cell.Value
' Replace1 = cell.Offset(0, 1).Value
For Each myStoryRange In wordDoc.StoryRanges
With myStoryRange.Find
.MatchCase = True
.MatchWholeWord = True
.MatchWildcards = True
.Text = "([0-9])( )([A-Za-zÆæØøÅå])"
.Forward = True
.MatchAllWordForms = False
.MatchSoundsLike = False
.Replacement.Text = "\1^2\3"
.Execute Replace:=wdReplaceAll
End With
Next myStoryRange
'Next cell
'End With
End Sub