VBA宏代码实现WPS的Word文档数理公式显示居中且自动编号,以及编号的交叉引用并快速更正

一,准备工具

软件: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中的定自义选项卡,
部分快捷键(有些快捷键是保存在模板中而非配置文件中)
等等
在这里插入图片描述


版权声明:本文为m0_55527741原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。