WPS的Word文档中数理公式显示居中且自动编号,以及编号的交叉引用并快速更正之VBA宏实现
一,准备工具
软件:WPS办公软件,版本11.1.0.10463
二,基本要求及目标功能
1,基本要求
(1),word文档纸张的页边距为普通
(2),WPS的word文档中已实现"多级章节自动编号"功能,重点是要有"章"的编号,后续公式自动编号会用到.
如果怕设置"多级章节自动编号"麻烦,此处可先跳过,后续在实现公式编号时不关联到"章"编号即可
(3),要设置一个无缩进的正文样式
2,目标功能
(1),数理公式"行居中"
(2),公式"显示"呈现,而不是"内嵌"
(3),公式最右边自动编号,如 “(式1-2)”,表示第1章的第二个公式
(4),上面3个功能的快捷实现
(5),交叉引用公式编号及快捷更正
3,为何要用表格来实现目标功能?
word文档中的数理公式有两种呈现方式:显示和内嵌.
常规情况:
"显示"独占一行,无法在该行尾添加公式编号
"内嵌"可在行尾添加公式编号,但"内嵌"的公式看上去不那么标准,难受
而采用word文档中的表格时:
公式既"显示"呈现,同时行尾还可编号
当采用无边框的表格时,"显示"的公式和编号"看上去"就是同一行.下图是打印预览模式下效果.
三,实现方法
1,涉及到word应用技巧中知识点
(1),域代码及对域代码的更新
(2),VBA编程(宏)
(3),WPS文档中"题注"的运用
(4),各级章节标题的样式设置
(5),多级章节自动编号设置以及与各级章节标题样式的关联
2,宏代码
(1)宏代码写在哪里?
在满足前述的基本要求前提下,于WPS中新建WORD空白文档.
菜单栏的"开发工具"标签>“WPS宏编辑器
在下图的"Normal.dotm>代码"目录上右键>插入>模块,并重命名为"公式”,然后双击打开.
"Normal.dotm"为文档的模板文件,此步骤就是将宏代码建在模板文件中,而非刚刚新建的空白文档中.
(2)详细宏代码
复制以下代码到新建的公式模块中,并保存.
注意:
a,代码中用到了前述中的"无缩进正文"样式.(Selection.Style = “正文”);
b,代码中变量T2(T2=“SEQ 式 \* ARABIC \s 2”)中"式"字关联到word文档中的"题注"设置,详见后续
function 公式()
{
//插入一行二列表格
ActiveDocument.Tables.Add(Selection.Range, 1, 2, 1, 0);
处理第1个单元格
//设置为无边框
Selection.Cells.Borders.Item(wdBorderTop).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderLeft).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderBottom).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderRight).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderHorizontal).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderVertical).LineStyle = wdLineStyleNone;
//将当前单元格样式设置为无缩进的正文
Selection.Style = "正文";
//左右,上下都居中
(obj=>{
obj.Cells.VerticalAlignment = wdCellAlignVerticalCenter;
obj.ParagraphFormat.Alignment = wdAlignParagraphCenter;
})(Selection);
处理第1个单元格
//光标右移一个字符,实际上是跳到第二列
Selection.MoveRight(wdCharacter, 1, wdMove);
//设置为无边框
Selection.Cells.Borders.Item(wdBorderTop).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderLeft).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderBottom).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderRight).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderHorizontal).LineStyle = wdLineStyleNone;
Selection.Cells.Borders.Item(wdBorderVertical).LineStyle = wdLineStyleNone;
//将当前单元格样式设置为无缩进的正文
Selection.Style = "正文";
//靠右,上下居中
(obj=>{
obj.Cells.VerticalAlignment = wdCellAlignVerticalCenter;
obj.ParagraphFormat.Alignment = wdAlignParagraphRight;
})(Selection);
//通过设置第一列宽度为350,来实现调节第二列宽度
let sel = Application.Selection.Start;
ActiveDocument.Range(sel-1, sel+1).Cells.SetWidth(350, wdAdjustFirstColumn);
如果未设置自动"章"编号,此处自行注释掉部分语句
//章节编号的域代码,域代码中的\字符在VBA中为转义字符,故要写两个\
T1="STYLEREF 2 \\s";
//章节内公式编号的域代码,域代码中的\字符在VBA中为转义字符,故要写两个\
T2="SEQ 式 \\* ARABIC \\s 2";
Selection.TypeText("(式");
//在光标处添加新域:章节编号
Selection.Fields.Add(Selection.Range,-1,T1,false)
Selection.TypeText("-");
//在光标处添加新域:章节内公式编号
Selection.Fields.Add(Selection.Range,-1,T2,false)
Selection.TypeText(")");
//将光标定位到本行开头,因为光标在单元格内,实际上是定位到该单元格的开头
Selection.HomeKey(wdLine, wdMove);
//光标移到第一列
Selection.MoveLeft(wdCharacter, 1, wdMove);
}
3,WPS文档题注设置
(1)菜单栏"引用"标签>题注,打开题注对话框
(2),新建标签,并命名为"式".此"式"字即为上述代码中T2变量中的"式"字,两者一定要相同
(3)点击编号,打开题注编号对话框,勾上包含章节编号,在章节起始样式中选择已设置好的章节级别(也就是在设置"多级章节自动编号"时"章"所在的级别).
如果未设置"多级章节自动编号",此处"包含章节编号"不打勾,同时,宏代码中要进行相应的改变
4,WPS快捷操作设置
(1)无法设置快捷键
经常使用办公软件的人都知道,熟练使用快捷键是效率非常高的.
但
不知为何,该版本的WPS文档(不是EXCEL)的宏在自定义快捷键设置中找不到,如下图中右侧"宏"的列表中为空,所以就没办法设置快捷键.
EXCEL中的宏可以设置快捷键.
(2)添加"公式"宏到WPS顶部的快速工具栏

5,宏安全级别设置
WPS新建文档后,左上角"文件">“选项”>“信任中心”>“宏安全性”.
根据需要设定宏安全级别.
宏安全级别影响再打打开word文档时是否会自动加载宏
6,实际应用之公式
(1)利用快速工具栏中宏图标快速插入表格
在编辑word文档时,将光标回车到新行,点击快速工具栏中的"宏图标",即可插入一个表格,该表格效果有:
a,所有边框为"无边框"
b,第一个单元格格式为"左右上下都居中",
c,第二个单元格格式为"靠右且上下居中"
d,第二个单元格中已有自动公式编号
e,光标自动定位到第一个单元格![]()
(2)菜单栏"插入"标签>公式
在第一个单元格光标处插入公式编辑区,同时菜单栏自动切换到"公式工具".![]()
此处为方便示范,快速插入一个大型公式,可以看到,随着大型公式的插入,表格的高度自动进行调整,同时第二个单元格的公式编号呈现"靠右且上下居中"的效果
7,实际应用之交叉引用公式编号
公式写好后在编辑文档时可引用公式的编号.
菜单栏"插入"或"引用"标签中>交叉引用
引用类型选之前题注设置中的"式",引用内容选"只有标签和编号"
将"插入为超链接"打上勾,可通过CTRL+鼠标左击跟踪到编号所指公式的位置.


8,实际应用之公式编号及对公式编号引用的快速更正
(1)何时需要对编号进行更正
当文档中多处存在交叉引用公式编号时,
如果在某个位置插入新的公式,
就需要对全文所有公式的编号以及对这些编号的引用进行更正.
(下图是插入公式后未更正编号的效果)
(2)如何快速更新公式编号
CTRL+A,选中全文,按F9,进行全文所有域代码结果更新
如果文档中有自动目录,会弹出提示,选更新整个目录
下图是更新全文公式编号后的效果
四,对文档模板和WPS所有自定义设置的备份维护
1,文档模板在哪?
WPS 中新建一个空白word文档,左上角"文档">“选项”>左侧"文件位置",即可见WPS文档模板的位置
2,文档模板特点
(1)文件格式为dotm格式,即可带宏代码的模板
(2)文件名不可改变Normal.dotm
3,文档模板的维护
新建空白文档,可以该文档中设置
(1)各级章节的样式,并配置快捷键
(2)多级章节自动编号
(3)将(2)和(1)中的样式关联
(4)宏代码
(5)自动目录
…
将文档另存文dotm格式的文件,并可重命名为Normal.dotm,然后替换文档默认的模板.
4,WPS所有自定义配置的备份
如下图的目录中,包含了WPS所有的自定义配置(包含EXCEL,word和PPT),
如
word或EXCEL中的定自义选项卡,
部分快捷键(有些快捷键是保存在模板中而非配置文件中)
等等