ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4721|回复: 4

[求助] 请守柔版主关注:如何将某文件夹下文件统一设置字体、字号、段落等?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-3-11 13:47 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这是守版的VBA代码:
Sub 批量格式设置()  '此代码为指定文件夹中所有选取的WORD文件的进行格式设置
    Dim MyDialog As FileDialog, vrtSelectedItem As Variant, Doc As Document
    ' On Error Resume Next '忽略错误
    '定义一个文件夹选取对话框
    Set MyDialog = Application.FileDialog(msoFileDialogFilePicker)
    With MyDialog
        .Filters.Clear    '清除所有文件筛选器中的项目
        .Filters.Add "所有 WORD 文件", "*.doc", 1    '增加筛选器的项目为所有WORD文件
        .AllowMultiSelect = True    '允许多项选择
        If .Show = -1 Then    '确定
            Application.ScreenUpdating = False
            For Each vrtSelectedItem In .SelectedItems    '在所有选取项目中循环
                Set Doc = Documents.Open(FileName:=vrtSelectedItem, Visible:=False)
                With Doc
                    With .PageSetup    '进行页面设置
                        .Orientation = wdOrientPortrait    '页面方向为纵向
                        .TopMargin = CentimetersToPoints(2.2)    '上边距为2.2cm
                        .BottomMargin = CentimetersToPoints(2.2)    '下边距为2.2cm
                        .LeftMargin = CentimetersToPoints(2.5)    '左边距为2.5cm
                        .RightMargin = CentimetersToPoints(2.5)    '右边距为2.5com
                        .Gutter = CentimetersToPoints(0)    '装订线0cm
                        .HeaderDistance = CentimetersToPoints(1.5)  '页眉1.5cm
                        .FooterDistance = CentimetersToPoints(1.75)    '页脚1.75cm
                        .PageWidth = CentimetersToPoints(21)    '纸张宽21cm
                        .PageHeight = CentimetersToPoints(29.7)    '纸张高29.7cm
                        .SectionStart = wdSectionNewPage    '节的起始位置:新建页
                        .OddAndEvenPagesHeaderFooter = False    '不勾选“奇偶页不同”
                        .DifferentFirstPageHeaderFooter = False    '不勾选“首页不同”
                        .VerticalAlignment = wdAlignVerticalTop    '页面垂直对齐方式为“顶端对齐”
                        .SuppressEndnotes = False    '不隐藏尾注
                        .MirrorMargins = False    '不设置首页的内外边距
                        .BookFoldRevPrinting = False    '不设置手动双面打印
                        .BookFoldPrintingSheets = 1    '默认打印份数为1
                        .GutterPos = wdGutterPosLeft    '装订线位于左侧
                        .LayoutMode = wdLayoutModeLineGrid    '版式模式为“只指定行网格”
                    End With
                    With .Content.ParagraphFormat    '段落格式设置
                        .LeftIndent = CentimetersToPoints(0)    '左缩进0cm
                        .RightIndent = CentimetersToPoints(0)    '右缩进0cm
                        .SpaceBefore = 0    '段前间距0cm
                        .SpaceBeforeAuto = False    '段前间距不设为“自动”
                        .SpaceAfter = 0    '段后间距0cm
                        .SpaceAfterAuto = False    '段后间距不设为“自动”
                        .LineSpacingRule = wdLineSpaceExactly
                        .LineSpacing = 24    '行距24磅
                        .Alignment = wdAlignParagraphJustify    '段落设置为两端对齐
                        .WidowControl = False    '不勾选“孤行控制”
                        .KeepWithNext = False    '不勾选“与下段同页”
                        .KeepTogether = False    '不勾选“段中不分页”
                        .PageBreakBefore = False    '不勾选“段前同页”
                        .NoLineNumber = False    '不勾选“取消行号”
                        .Hyphenation = True    '不勾选“允许西文在单词中间换行”
                        .FirstLineIndent = CentimetersToPoints(0)    '首行缩进0cm
                        .OutlineLevel = wdOutlineLevelBodyText    '大纲级别为“正文文本”
                        .CharacterUnitLeftIndent = 0    '段落左缩进0cm
                        .CharacterUnitRightIndent = 0    '段落右缩进0cm
                        .CharacterUnitFirstLineIndent = 0    '特殊格式为“无”
                        .LineUnitBefore = 0    '段前间距为0
                        .LineUnitAfter = 0    '段后间距为0
                        .AutoAdjustRightIndent = True    '自动调整段落的右缩进
                        .DisableLineHeightGrid = False    '勾选“如果定义了文档网格,则对齐网格”,即指定段落中的字符与行网格对齐
                        .FarEastLineBreakControl = True    '将东亚语言文字的换行规则应用于指定的段落
                        .WordWrap = True    '在指定段落或文本框的西文单词中间断字换行
                        .HangingPunctuation = True    '指定段落中的标点将可以溢出边界
                        .HalfWidthPunctuationOnTopOfLine = False
                        .AddSpaceBetweenFarEastAndAlpha = True    '自动在指定段落的中文文字和拉丁文字之间添加空格。
                        .AddSpaceBetweenFarEastAndDigit = True    '自动在指定段落中的中文文字与数字之间添加空格
                        .BaseLineAlignment = wdBaselineAlignAuto    '自动调整基线字体对齐方式
                    End With
                    ''''''''''新增部分
                    With .Content
                        With .Font
                            .NameFarEast = "宋体"
                            .NameAscii = "Times New Roman"
                            .Size = 12
                        End With
                        With .Paragraphs.First
                            .Range.Font.Size = 16
                            .Alignment = wdAlignParagraphCenter
                        End With
                    End With
                    .Close True
                End With
            Next
            Application.ScreenUpdating = True
        End If
    End With
    MsgBox "格式化文档操作设置完毕!", vbInformation
End Sub

请教版主:
1、如何将“特殊格式”设为“首行缩进”,度量值为“2字符”;
2、能否实现如下要求——文章标题设为“小标宋”,字号为“20”,一级标题设为“黑体,小三”,二级标题设为“楷体,小三”,正文为“仿宋_2312,小三”?
期盼守版指教!


[ 本帖最后由 hg908 于 2010-3-11 19:36 编辑 ]

TA的精华主题

TA的得分主题

发表于 2010-3-12 09:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 1楼 hg908 的帖子

关于“
1、如何将“特殊格式”设为“首行缩进”,度量值为“2字符”;
2、能否实现如下要求——文章标题设为“小标宋”,字号为“20”,一级标题设为“黑体,小三”,二级标题设为“楷体,小三”,正文为“仿宋_2312,小三”?
期盼守版指教!”
这个问题,说简单,你只要会样式就可以了。
说复杂,很复杂。文章标题,如何来判断,第一段?第一个非空白段落?其它标题,如果原有有编号,甚至是手工编号,怎么处理?
我个人对此只能给楼主提供一个处理思路。
将VBA代码写入一个包含上述样式的文档中,利用代码打开文档,将当前的样式复制到打开的文档中,根据实际情况,为每个符合要求的段落应用指定样式。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-3-13 09:07 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2010-3-17 09:56 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个功能太强大了!

TA的精华主题

TA的得分主题

发表于 2022-9-5 11:31 | 显示全部楼层
hg908 发表于 2010-3-13 09:07
感谢版主关注和指导,看来是太难了,谢谢!

先设定标准,才能执行标准。比如标题的判断,可能要符合以下几种情况:
开头部分
①没有缩进或空格;
②以“第”、“一二三四五六七八九”、“(”、“1-9”等字符开头;
结尾部分
①以非[。!?”)——……]等字符结尾,这里只列举了中文情况,英文或许需要半角符号。这一条是排除非标题段落部分正常情况下的结尾;
②其他非自然语法的非标体段落,比如合同或公文里面常见的的年月日行和签字行等情况,可能是以日、空格或者下括号结尾,那就可以跟上一条归为一类。
内容长度
标题一般不会太长,加个字数限制,可以排除一些意外的情况,不过,也可能多出一些意外情况。
以上,一时就想到这些,不揣冒昧,抛砖引玉~
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-29 03:34 , Processed in 0.030363 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表