excel - VBA 在 word 中查找和替换。用数字和单词之间的不间断空格替换空格
问题描述
我希望你能帮助我。我有三个问题:
- 在下面的编码中,我试图用“\1^s\3”替换“([0-9])()([A-Za-zÆæØøÅå])”,但结果总是以 \1\3^ 结尾2或例如“3 A”将变为“3A(不间断空格)”,但我想要的是“3(不间断空格)A”。
- 有什么办法可以让 ([A-Za-zÆæØøÅå]) 变成一个动态词?我有一个我想使用的单词列表。例如“3 mg”到“3(不间断空间)mg”或“1 kg”到“1(不间断空间)kilo”。
- 有什么办法可以进行搜索和替换,我只用“不间断空格”而不是通配符替换“空格”。上述解决方案将导致通配符被自己替换,这通常不是问题,但由于我在跟踪更改的文档中执行此操作,因此它是可见的。
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
解决方案
- ^s 是一个不间断的空格,而不是 ^2。您可以通过查看 Word 中高级查找对话框中的文本轻松找到所需的符号。
- 只需将通配符替换为包含您要查找的单词的变量即可。您将需要对每个 Word 运行单独的搜索。
- 是的,但您将无法使用替换。您需要编写代码来处理找到的每个匹配项。有许多示例显示如何在 SO 上执行此操作,例如使用页码将包含某个关键字的字符串值从 Word doc 提取到 Excel
推荐阅读
- sql - SQL)我似乎无法弄清楚如何使用 Lead() 方法比较 SQL 中的连续行
- sql - 如何对 SQL 中的列求和?
- c++ - 是否可以在 Qt C++ 中从 3D 散点图显示 3D 曲面图?
- java - 为什么我的应用程序在模拟器和手机中都崩溃了?
- docker - Azure 应用服务共享托管失败容器启动
- ios - 在 UICollectionView 上的动画中缩放和设置 contentOffset 后单元格消失
- spring-data-jpa - 执行existsbyid()时,传入复合主键对象,报错
- javascript - 提交表单时反应无效的对象错误
- javascript - 如何在 Froala Editor 4.0.1 中插入图像 插入图像 -> 只需以“data:image”的形式插入 DOM
- node.js - 基于 NLP 的 API,可提取骑行时间