当前位置:首页 > 文章中心 > 正文内容

word公文自动排版VBA代码,拿走不谢

dgx6664个月前 (04-15)文章中心26

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

扫描二维码推送至手机访问。

版权声明:本文由第六芝士网发布,如需转载请注明出处。

本文链接:http://www.dgx666.com/post/1003.html

分享给朋友:

“word公文自动排版VBA代码,拿走不谢” 的相关文章

装上显卡后还要干啥?AMD Radeon驱动设置指南

购买了AMD Radeon显卡后,除了把它安装在主板的PCIe插槽上,你还要做一件重要的事,那便是给它打上新的Radeon显卡驱动,让它发挥出色效能。跟其他软件一样,Radeon显卡驱动非常容易安装。只需要在AMD官网点击相应的下载链接,就能将文件下载至电脑。打开安装程序后,接下来只需一路点击下一步...

CAD软件哪个版本最好用?今天就来探讨下

CAD软件哪个版本最好用?相信大部分人都听说过CAD软件,可能大部分很多朋友都还用过CAD软件。CAD软件作为设计制图行业的翘楚,可谓是大名鼎鼎,无人不知,无人不晓。而CAD软件自从20世纪80年代推出来之后,已经更新了二十多个版本每个版本都有它独特的特点,而哪个版本的CAD软件最好用呢?很多人因此...

一分钟教会你在iPhone桌面添加备忘录小组件

iPhone手机在不少年轻人的心目当中,都是选择新手机时的首选。之所以有这样傲人的成绩,跟iPhone手机的各种设计是分不开的。在iPhone手机的iOS系统上,可以使用小组件功能,这个设计有很多软件都支持,包括备忘录。一分钟教会你在iPhone桌面添加备忘录小组件。在iPhone手机的桌面上添加备...

国产版Sora开源了!推理优化到18G,4090单卡可跑

作者 | ZeR0编辑 | 漠影智东西8月6日报道,好消息,智谱AI的视频生成模型CogVideoX-2B,昨晚正式开源了。模型已上架GitHub、Hugging Face,FP16精度下的推理仅需18GB显存,微调则只需要40GB,单张4090显卡可推理,单张A6000可微调。CogVideoX-...

剪映APP里面字体的全称,经过字体对比,已经找到了

做自媒体的VLOG主,一般都比较担心侵权问题,主要就是字体侵权和音乐侵权,所以刚开始起步,我们就要有这种意识,不然等以后做大了,所有视频字体侵权,难道你下架所有视频?显然是不可能的,所以刚起步,我们就要了解哪些不侵权。在西瓜视频看到好多关于字体侵权的介绍,所以就研究了一下剪映APP里面,字体是否可以...

0基础怎么开始学习制作PPT,deepseek是这么回答的

0基础怎么开始学习PPT,deepseek教我们可以这样去开始学习零基础学习PPT制作可以从以下几个步骤开始,循序渐进地掌握基础操作和设计技巧:1. 熟悉软件界面与基础操作了解工具位置:打开PowerPoint或WPS演示,熟悉菜单栏(开始、插入、设计、切换、动画等)、工具栏(字体、形状、对齐工具)...