VBA操作word
标记数字
要求:将word 文档中的所有数字标记出来
Sub 修改word的所有数字()
t = Timer()
Dim i As Long, c As Range, d As Document
'遍历该段落中全部字符
For i = 1 To Application.ActiveDocument.Characters.Count
'将第i个字符构成的range对象赋给c
Set c = Application.ActiveDocument.Characters(i)
If IsNumeric(c.Text) Then
'range.value在word中为range.text
c.Bold = True
c.Font.ColorIndex = wdRed
c.Italic = True
End If
Next i
MsgBox "一共用了" & Timer() - t & "秒"
End Sub
注意事项:第一是要写在word中间而不是excel里面
第二是要启用docm而不是docx
上述代码工作效率较低,一页文档几百个字符用了4分钟才处理完,具体技术优化暂时还做不到,留个坑以后填
在word中的数组都是一维的,没有行和列这种概念
range(3,8)从第3号字符开始,到第8号字符之前结束,从0开始编号
得到34567这5个字符
运用正则表达式
找出所有百分数
如果把上述正则表达式改为"\d",按理上也是找到所有的数字,效率会高很多,一秒都不需要
不过我只在整个论文的摘要页使用,没有问题,但是推广到全文,就有很多意想不到的错误
我直接用上述代码推广到全文,也出现了一些意想不到的错误,但是我单独把段落复制到正则表达式检测器里面,又发现表达式没有问题,所以这里继续留坑