目录
一、问题设定
假如现在有如下文档,需要将里面所有字符形式的分工改成数学公式(且是竖式)
![](https://i-blog.csdnimg.cn/blog_migrate/598c7eb85a40dd825e613bce367c4335.jpeg)
二、思路分析
1.第一步:定位公式区域
(1)方法概述
因为字符形式的分式有明显的规律,即数字(1位或多位)+“/”+数字(1位或多位)。这样就可以用Word自带的批处理功能【通配符查找替换】一次性选中所有符合要求的字符串(即每个分式区域)。
这一步的方法基本固定,不推荐其他复杂方法;如果有更简单方法找到分式区域,欢迎交流。
(2)操作
A.参数
查找框:[0-9]{1,}/[0-9]{1,}
勾选【使用通配符】
![](https://i-blog.csdnimg.cn/blog_migrate/280c9acffb620253f7eeaf3e5eeff55f.jpeg)
B.全选
点击【在以下项中查找】-【当前所选内容】(只对事先已经选择的区域生效)/【主文档】(对整篇文档生效)
![](https://i-blog.csdnimg.cn/blog_migrate/5ef7db90418bf7824e2c0292adf0c60f.jpeg)
这样,所有符合条件的公式区域就选中了
![](https://i-blog.csdnimg.cn/blog_migrate/d73044bf9cca0c06644899548f704f5f.jpeg)
2.转换为公式
这里有两种推荐方法:手动操作和VBA代码操作(因为当文档里公式过多的时候,手动可能卡死;而代码用的循环方法,一般不会卡死)
如果您不会代码操作,只需手动操作即可
(1)手动操作
A.点击【插入】选项卡-【公式】-【插入新公式】
![](https://i-blog.csdnimg.cn/blog_migrate/3c0ce3b2b09cc81aad644784561f5a70.jpeg)
B.此时,所选区域,全部由变通文本变成了Word自带公式(Omath公式)
![](https://i-blog.csdnimg.cn/blog_migrate/181132732b8c4e8275fe8f3484b79d7d.jpeg)
但是还有问题,这时候的公式显示形式还是横式(公式中间仍是斜杠)。
原因:此时的公式是Omath公式的线性形式
C.我们需要将公式全部转换成Omath公式的专业形式:
点击上方【公式】菜单-【转换】-【全部-专业】
![](https://i-blog.csdnimg.cn/blog_migrate/09e5c47f8d98177de06cb4d367fd0ea6.jpeg)
D.完成,效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/f03eb6c76482821c6943aa9c65ac5ee7.jpeg)
(2)Word VBA代码操作
A.思路
a.遍历待处理的公式区域
查找时不用全选,而是相当于点【下一处】,这样每一处公式区域就可以逐一被选中
![](https://i-blog.csdnimg.cn/blog_migrate/d87cbd304df3ea2d4224cd52837dd5ee.jpeg)
b.在选中的区域新建公式,并且将公式形式转换为【专业型】
B.示例代码
Sub 文本公式转Omath公式()
Dim i As Integer
Dim rng As Range
Dim omEq As Range
With ActiveDocument.Content.Find
.ClearFormatting
.Forward = True
.MatchWildcards = True
.Wrap = wdFindStop
.Text = "[0-9]{1,}/[0-9]{1,}"
Do While .Execute
Set rng = ActiveDocument.Range(.Parent.Start, .Parent.End)
Set omEq = rng.OMaths.Add(Range:=rng)
omEq.OMaths(1).BuildUp
i = i + 1
Debug.Print Format(i, "第0处处理完成")
Loop
End With
Set rng = Nothing
Set omEq = Nothing
MsgBox Format(i, "完成 共处理了0处公式")
End Sub
C.执行效果
a.执行代码
![](https://i-blog.csdnimg.cn/blog_migrate/dd1d98e9cf4b3e0583ea5b699a328eb4.jpeg)
但是为什么没效果呢?
因为还没点【确定】按钮,我们点一下即可:
b.完成效果
![](https://i-blog.csdnimg.cn/blog_migrate/048b74ad159b4f0f4649297d1858b75d.jpeg)
三、补充
如果需要将公式转换成MathType公式(前提是要有较新版本的MathType公式插件),只需:
![](https://i-blog.csdnimg.cn/blog_migrate/43ff776de56cd523bdfd7b6241b10bd3.jpeg)
按上图设根据需要置好参数,点击【转换】,等待完成即可。
四、总结
1.重视Word替换
建议无论新手老手,操作Word排版中一定要把查找替换尤其是【通配符查找替换】当作批处理工具首选。(即使会VBA也是这样)
2.关键要学习思路
因为在实际工作中很难遇到一模一样的问题,但思路大同小异,只是具体步骤(比如查找框和替换框里的模式/内容)稍有变化。