word公文自动排版VBA代码,拿走不谢
ninehua 2025-04-08 17:07 31 浏览
Sub 文档初始化() '公文格式初始化
Selection.WholeStory '选择word 所有文档
Selection.ClearFormatting '文档格式清除
Selection.Range.HighlightColorIndex = wdNoHighlight '突出显示文本取消
With Selection.Paragraphs '段落设置
.Alignment = wdAlignParagraphLeft '左对齐
.LineSpacingRule = wdLineSpaceExactly '行距固定28.8
.LineSpacing = 28.8
.IndentFirstLineCharWidth 3 '首行缩进2个字符
End With
With Selection.Font '字体设置
.Name = "仿宋_GB2312" '字体名称
.Size = 16 '三号字体
.ColorIndex = wdBlack '黑色
End With
End Sub
Sub 标题正文设置()
With Selection.PageSetup '页面设置
.TopMargin = CentimetersToPoints(3.7) '顶端边距
.BottomMargin = CentimetersToPoints(3.5) '底端边距
.LeftMargin = CentimetersToPoints(2.8) '左边距
.RightMargin = CentimetersToPoints(2.6) '右边距
'.PageWidth = CentimetersToPoints(18.2) '页面宽度
'.PageHeight = CentimetersToPoints(25.7) '页面高度
End With
'字体设置
Dim title_reg, f_reg, s_reg, th_reg, fr_reg, k, mh, strA$
Set myRange = ActiveDocument.Content
' 正则表达式 获取文档内容
strA = myRange.Text
Set title_reg = CreateObject("vbscript.regexp")
Set f_reg = CreateObject("vbscript.regexp")
Set s_reg = CreateObject("vbscript.regexp")
Set th_reg = CreateObject("vbscript.regexp")
Selection.HomeKey unit:=wdStory '光标回到文章开头
t = 0
title_reg.Pattern = "\r\r"
'[^\r]除了换行符之外的所有字符
title_reg.Global = True
Set Title = title_reg.Execute(strA)
With Selection.Find
.ClearFormatting
.Text = Title.Item(0)
.Execute Forward:=True
Selection.HomeKey unit:=wdStory, Extend:=wdExtend
End With
'选择有两个换行符的至开头的所有段落
With Selection.Font
.Name = "方正小标宋简体"
.Size = 22
.ColorIndex = wdBlack
End With
With Selection.Paragraphs '设置行距
.FirstLineIndent = CentimetersToPoints(0) '取消首行缩进
.Alignment = wdAlignParagraphCenter '段落居中
.LineSpacingRule = wdLineSpaceExactly '行距固定
.LineSpacing =
Word.Application.LinesToPoints(2.3) '行距为2.3倍行距 一行距=12
End With
' 以下是设置一级标题
t1 = 0 '初始化t1,作为一级标题是否是一是二是三是的标记,如果是,则为1,不是则为0
Selection.HomeKey unit:=wdStory
f_reg.Pattern = "(一、|二、|三、|四、|五、|六、|七、|八、|九、|十、|十一、|十二、|十三、|十四、|十五、|十六、|十七、|十八、|十九、|二十、|二十一、|二十二、|二十三、|二十四、|二十五、|二十五、|二十五、|二十六、|二十七、|二十八、|二十九、|三十、)[^\r]*\r"
f_reg.Global = True
Set f_titles = f_reg.Execute(strA)
If f_titles.Count = 0 Then '如果一级标题是一是二是三是,则匹配
f_reg.Pattern = "(一是|二是|三是|四是|五是|六是|七是|八是|九是|十是|十一是|十二是|十三是|十四是|十五是|十六是|十七是|十八是|十九是|二十是|二十一是|二十二是|二十三是|二十四是|二十五是|二十六是|二十七是|二十八是|二十九是|三十是)([^。])*。"
Set f_titles = f_reg.Execute(strA)
t1 = 1
End If
For Each f_title In f_titles
With Selection.Find
.ClearFormatting
.Text = f_title.Value
Debug.Print "一级标题遍历项目:"; f_title.Value
.Execute Forward:=True
End With
With Selection.Font
.Name = "黑体"
.Size = "16"
.ColorIndex = wdBlack
End With
Selection.HomeKey unit:=wdStory
Next
' 以下是设置二级标题
If t1 = 0 Then 'p判断一级标题是否是一是二是三是的标记,如果是0,则不是一是二是三是,则执行,不是则不执行
t2 = 0
Selection.HomeKey unit:=wdStory
s_reg.Global = True
s_reg.Pattern = "((一)|(二)|(三)|(四)|(五)|(六)|(七)|(八)|(九)|(十)|(十一)|(十二)|(十三)|(十四)|(十五)|(十六)|(十七)|(十八)|(十九)|(二十)|(二十一)|(二十二)|(二十三)|(二十四)|(二十五)|(二十六)|(二十七)|(二十八)|(二十九)|(三十))([^。\r:])*[。|\r:]" '排除句号和段落符号查找所有,找到句号或段落符号后停止
Set s_titles = s_reg.Execute(strA)
If s_titles.Count = 0 Then '如果二级标题是一是二是三是,则匹配
s_reg.Pattern = "(一是|二是|三是|四是|五是|六是|七是|八是|九是|十是|十一是|十二是|十三是|十四是|十五是|十六是|十七是|十八是|十九是|二十是|二十一是|二十二是|二十三是|二十四是|二十五是|二十六是|二十七是|二十八是|二十九是|三十是)([^。])*。"
Set s_titles = s_reg.Execute(strA)
t2 = 1
End If
For Each s_title In s_titles
With Selection.Find
.ClearFormatting
.Text = s_title.Value
Debug.Print "二级标题遍历项目:"; s_title.Value
.Execute Forward:=True
End With
With Selection.Font
.Name = "楷体"
.Size = "16"
.ColorIndex = wdBlack
.Bold = True
End With
Selection.HomeKey unit:=wdStory
Next
End If
' 以下是设置三级标题
If t2 = 0 Then
Selection.HomeKey unit:=wdStory
th_reg.Global = True
th_reg.Pattern = "\r\d{1,2}\.([^。])*。"
Set th_titles = th_reg.Execute(strA)
If th_titles.Count = 0 Then '如果三级标题是一是二是三是,则匹配
th_reg.Pattern = "(一是|二是|三是|四是|五是|六是|七是|八是|九是|十是|十一是|十二是|十三是|十四是|十五是|十六是|十七是|十八是|十九是|二十是|二十一是|二十二是|二十三是|二十四是|二十五是|二十六是|二十七是|二十八是|二十九是|三十是)([^。])*。"
Set th_titles = th_reg.Execute(strA)
End If
For Each th_title In th_titles
With Selection.Find
.ClearFormatting
.Text = th_title.Value
Debug.Print "三级标题遍历项目:"; th_title.Value
.Execute Forward:=True
End With
With Selection.Font
.Bold = True
.ColorIndex = wdBlack
End With
Selection.HomeKey unit:=wdStory
Next
End If
End Sub
Sub 页码设置()
ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary).PageNumbers.Add PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True
With ActiveDocument.Sections(1).Footers(wdHeaderFooterPrimary) '进入页脚编辑状态
.Range.Font.Size = 15
.Range.Font.Name = "仿宋"
.Range.Collapse Direction:=wdCollapseEnd
End With
End Sub
Sub 删除页眉横线()
With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Range '进入页脚编辑状态
.Delete '删除页眉中的内容
.ParagraphFormat.Borders(wdBorderBottom).LineStyle = wdLineStyleNone '段落下边框线
End With
End Sub
Sub 公文格式排版()
Call 文档初始化
Call 标题正文设置
Call 页码设置
Call 删除页眉横线
End Sub
相关推荐
- 不要随便给别人的iPhone刷机,否则后果会很严重
-
一网友称自己也算一个果粉,并且也使用iPhone多年,最近虽然看到网上有很多人给iPhone刷机的时候导致错误代码,变成白苹果,但是还是肆无忌惮的帮老板娘给iPhone刷机了!心想一部好好的iPhon...
- iphone6白苹果重启、刷机报错4005维修实记
-
【机器型号】:iPhone6【故障现象】:刷机报错4005【客户描述】:机器摔过后开机白苹果重启,刷机报错4005【维修过程】:客户发过来的是单板,硬盘已经焊过,码片位置也飞过线。如图:接上外壳刷机,...
- iPhone、iPad刷机报错是什么原因?详见苹果刷机报错代码大全
-
无论是借助iTunes或其它工具给iPhone、iPad刷机,都可能遇到失败报错的情况,失败报错会有代码提示。如下图中的“发生未知错误(9)”,9是指什么意思?是属于什么原因?对于专业维修人员可能很清...
- 技术文:iPhone 刷机报错 53 详解及维修方法
-
指纹电路关联的各个模块:1:指纹模块(也就是HOME键排线):上面有指纹识别块(HOME键蓝宝石玻璃)、排线、指纹处理芯片。2:指纹连接排线:连接指纹模块到主板的接口3:指纹接口4:指纹验证码片:就是...
- 闲鱼22元入手WiFi6无线网卡,20厘米长天线+双频900M
-
我自用的小主机是攒出来的,机箱是2012年买的立人NC2007B,随后十多年只换主板不换机箱,目前是H110M主板+I7-6700处理器,一直都使用USB外置无线网卡。上周我在狗东7.9元买了WiFi...
- IObit Driver Booster Pro 专业驱动软件
-
软件介绍DriverBooster是一款针对Windows操作系统的电脑的驱动程序更新工具。更新驱动可以有效地提升电脑硬件性能,减少系统崩溃降低硬件冲突。该驱动加速器软件可以通过智能的检测引擎有效识...
- 制作Win10系统安装盘和Win系统的安装
-
制作Win10系统安装盘和Win系统的安装重要提示:操作之前准备工作必须看一下1.准备8G或8G以上U盘(32G以内)。制作系统U盘会格式化U盘内所有文件,建议准备一个新U盘,或者U盘文件拷贝到其他文...
- Win10专业版无线网络老是掉线的问题
-
有一位电脑基地的用户,使用win10专业版系统笔记本电脑的时候,总是出现无线网卡掉线的问题,这该怎么办呢?接下来,技术员小编就来分享具体的解决方法。Win10专业版下无线总是掉线,可能是由电源管理设...
- ESXI安装OpenWRT+群晖NAS+Win,打造AIO,附硬盘+网卡直通教程
-
开篇碎碎念Hi,大家好,今天来打造一个全能小主机,通过ESXI虚拟机为底层,在此基础上安装OpenWRT软路由+群晖NAS+Windows/linux系统,软路由负责上网,NAS负责文件存储,Wind...
- 如何在Windows上安装.NET Framework 详细教程分享
-
.NETFramework是Microsoft推出的一套开发平台,主要用于Windows操作系统上的应用程序开发和运行。许多软件和游戏需要安装特定版本的.NETFramework才能正常运行。...
- Win10不和无线网卡好好玩耍!部分Win7/Win8.1用户很忧伤
-
IT之家讯硬件兼容问题一直困扰着一些Win7/Win8.1用户,因为这很影响他们和Win10好好玩耍。尤其是一些关键硬件,比如显卡和网卡如果有问题,基本上就意味着堵死了升级的道路,除非有合适的驱动更...
- 直接安装Windows 10 v20H2原版纯净系统教程(附下载地址)
-
软件简介:软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法!想要无痛升级您的电脑系统至Windows10吗?我们提供了一个简便的解决方案,适合能正常开机的电脑,无需制作启动U盘。此方案...
- 电脑网卡坏了怎么修复(电脑网卡坏了怎么修复win7系统)
-
当电脑网卡出现故障时,无论是有线网络还是无线网络,都可能无法正常连接。下面从软件、硬件等方面,分步骤为你介绍排查与修复的解决方案。一、初步排查:锁定问题源头检查网络环境将手机、平板等其他设备连接至同一...
- 自已封装的Windows10(仅供学习)(自己封装系统)
-
前段时间封装一个纯净版的Window10LTSC,除了带Office2016、极点输入法和万能五笔外,无任何其它三方软件,也没有浏览器主页挟持,真正意义上的纯净版系统。(春节后会出系统封装专题)这...
- 如何安装设置无线网卡(非免驱版)?
-
使用无线网卡,可以将您的台式机连接到无线网络,就像笔记本、手机一样,无需使用网线连接。本文介绍无线网卡的安装及使用方法。安装网卡之前,请确认电脑光盘驱动可以正常使用,同时准备好网卡安装光盘。注意:若无...