VBA在word中查找和替换.用数字和单词之间不间断的空格替换空格



我希望你能帮助我。我有三个问题:

  1. 在下面的编码中,我试图替换";([0-9](((([A-Za-zÆæethøÅå]("用"\1^s\3";,但结果总是以\1\3^2或例如";3A〃;将变成";3A(非断裂空间(";,但我想要的是";3(非中断空间(A〃
  2. 有什么方法可以让([A-Za-zÆæethøÅå](变成一个动态单词吗?我有一个我想用的单词列表。实例";3mg";至";3(非断裂空间(mg";或";1公斤";至";1(非断裂空间(千克">
  3. 是否有任何方法可以进行搜索和替换,其中我只替换";空间";用一个";不间断空间";而不是通配符。上面的解决方案将导致通配符被它们自己替换,这通常不是问题,但由于我在跟踪更改的文档中这样做,这将是可取的
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^23"
.Execute Replace:=wdReplaceAll
End With
Next myStoryRange
'Next cell
'End With
End Sub
  1. ^s是一个不间断的空间,而不是^2。您可以通过查看Word中"高级查找"对话框中的文本,轻松找到所需的符号
  2. 只需将通配符替换为包含您要查找的单词的变量。您需要对每个单词进行单独的搜索
  3. 可以,但您将无法使用"替换"。您需要编写代码来处理找到的每个匹配项。有很多例子展示了如何在SO上做到这一点,例如从word文档中提取包含某个关键字的字符串值到Excel中

最新更新