ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] Word 2003 & 2019 自动排版宏(2020 国庆珍藏版)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2021-3-1 14:13 | 显示全部楼层
这个终版速度确实提升很大。超棒!
对于45级标题我说说我的想法:
对于独立行可以定义为4,5标题,对于后面随正文的(前面加粗强调,后面不加粗接续的文本)。能不能不定义为45级标题,而是正文样式,只是前面的一段加粗强调?如同一是一要的处理?这比较符合一般处理习惯。(标题功用之一是用来抽目录,而一大段的文字被定义成标题样式不可能被抽目录)。以上的想法,不知道代码如何修改实现?有空老师指导指导。感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-1 22:29 | 显示全部楼层
* 楼上朋友 说得很好!多谢!看来你是认真用过、体会过的。这个标题段落并非单个句子,而是多个句子,怎么设置其样式呢?我也不太清楚,糊涂着。过去曾经有个版本一度将其强制拆分第一个单个句子作为标题,后面的句子就做为正文。但又有情况,如果像你说的这样,就又影响了标题2345自动编号的功能。
   
* 你只提了 4级/5级标题,其实 2级/3级 标题也有此问题。只能说这种不规范标题,令人头疼!——平时我从不制作目录,故未想到目录应用。如果不将其作为标题,则有可能某个文档全文都是这种非正式标题,如果不设置其为标题样式,似乎又说不过去。何去何从,我也想不明白。

TA的精华主题

TA的得分主题

发表于 2021-3-6 06:08 | 显示全部楼层
这问题我尝试过一段时间,已经解决了此问题。我的思路是
先建立10个样式,样式只有大纲级别,没有其他的字体和段落设置
然后再查找替换代码中,引用此段落样式,就能产生您所说的效果

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-6 13:02 | 显示全部楼层
谢谢 楼上 朋友!这个问题仍然困扰着我。如果不将这些符合标题级别的段落设置为标题样式,势必无法在制作目录时引用它们;如果作为标题样式,又嫌太长,并非一段。那么,是不是在第一个句子后强制断开它比较好呢?又不好说。

TA的精华主题

TA的得分主题

发表于 2021-3-6 21:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
      就在您下面段通用代码(局部)的下方,增加一行“ .ParagraphFormat  .OutlineLevel=1”即可调整段落级别,取得分别为1、2、3、4、5、6、7、8、9、10,分别对应1-9级和正文,此设置不影响字体及段落格式。用其他方式似乎不能方便地调整段落级别。
      但您的这段代码需要考虑重复执行造成防死循环的问题,需要在下面的代码中加入判断,防止死循环的出现。

With R.Find
            .ClearFormatting
            .Text = "[^13^12^14]附件*^13"
            .Forward = True
            .MatchWildcards = True
            Do While .Execute
                With .Parent
                    

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-7 01:48 | 显示全部楼层
* 楼上朋友,你好!谢谢!——但你说的我未明白,请再详细说一说,另外,是否有示例文档?及代码?
* 类似“1.具体实践。工作原理。”这样的段落,是设置为“标题 4”还是只设置其为大纲级别 4 级?

TA的精华主题

TA的得分主题

发表于 2021-3-7 10:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
老师好!
      我这是班门弄斧啊。附上我的代码,请老师指教。
      在这段代码中,大纲级别单独设置,与字体及其他段落参数没有关联。
Private Sub CommandButton1_Click()
Set OutlineLevelDic = CreateObject("Scripting.Dictionary") '设置大纲级别字典 后期引用
    OutlineLevelDic.Add "正文", 10 '等同数值10
    OutlineLevelDic.Add "1级", 1          '等同数值1
    OutlineLevelDic.Add "2级", 2         '等同数值2
    OutlineLevelDic.Add "3级", 3         '等同数值3
    OutlineLevelDic.Add "4级", 4         '等同数值4
    OutlineLevelDic.Add "5级", 5         '等同数值5
    OutlineLevelDic.Add "6级", 6         '等同数值6
    OutlineLevelDic.Add "7级", 7        '等同数值7
    OutlineLevelDic.Add "8级", 8         '等同数值8
    OutlineLevelDic.Add "9级", 9        '等同数值9
   

Box1 = OutlineLevelDic(ThisDocument.ComboBox1.Value)  ' ThisDocument.ComboBox1.Value '读取段落级别设置参数

With Selection.Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "^13第[一二三四五六七八九十]章*^13" '查找内容可根据需要设置
    .Replacement.Text = "^&"
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchWildcards = True
    i = 0
     Do While .Execute      '只能通过循环的方式修改大纲级别
            With .Parent
                    j = ActiveDocument.Range(Start:=0, End:=.End).Characters.Count
                    If j < i Then Exit Do Else i = j
                    .MoveStart
                    With .Range.Font
                        .Name = "黑体"     '字体型号
                         .Size = 15          '字体大小
                         .Color = wdColorRed
                         .Bold = True  '是否加粗
                    End With
                    
               
                        With .ParagraphFormat      '对于段落格式,需要用此方式才能设置成功,如果像字体".Replacement.font"那样设置是无效的
                              .OutlineLevel = Box1
                             .Alignment = wdAlignParagraphCenter
                             .Space15                 '1.5倍行距
                                 
                             '其他段落格式均可在此设置
                                 
                        End With
                    .Start = .End '因为Text的首尾为同一字符,还需对End调减1位(略)
            End With
    Loop
End With

End Sub

我的VBA123.rar

96.76 KB, 下载次数: 56

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-7 12:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 413191246se 于 2021-3-7 12:42 编辑

* GONG2816 老师 好!——大家都称呼我为老师,其实,我只是在录制宏的基础上折腾一下代码,根本不懂什么字典、正则、对象、数组等这些高级技巧,我应该称呼你为老师才对呀!
   
* 非常感谢提供的示例代码,看了有多处使用字典的情况,字典确实不会不懂,声明了 3 个变量之后,拷贝到 NewMacros 模块中(我不太喜欢 ThisDocument,喜欢通用的),程序终于运行了。但有一点有点儿疑惑:大纲级别设置了 4 级,而看到样式框中样式仍然是正文,这样好吗?(这一点与 老师 不敢苟同。我的看法是,样式框中是几级,大纲级别自然是几级。)
   
* 给 老师 提供几点建议:一是尽量显式声明变量;二是 Word 自动排版,看到注释里面多次提到 Excel,应该与 Excel 无关吧!三是有些代码没有缩进,格式不清晰。(老师 的注释我觉得很认真!就好像设计文档一样,当然,我也不懂设计文档。)
   
* 期待 老师 做出完备的作品,让大家试用。最近,我也一直在思考:到底用不用窗体来自动排版?字表混排怎么提高排版速度?无奈,水平非常有限,领悟能力太低,一直未有进展。
   
* 希望继续保持联系,在中文自动排版方面交流意见、共同提高促进,谢谢!

TA的精华主题

TA的得分主题

发表于 2021-3-7 21:33 | 显示全部楼层
老师谦虚了
     1.我的思路就是不引用系统里本身就有的段落级别,也不考虑该段落级别给别的文档编辑时引用,仅仅用来使自己编辑的文档导航窗中看到段落级别的层次,所以做了这样简化的处理。
     2.后面的注释代码忘记删除了,那是我通过建立EXCEL参数表,通过调用参数表对WORD文档格式进行调整,由于与这里讨论的主题不同,所以没有提及
     3.关于变量声明及格式等问题,谢谢您的指出。我确实没有关注这些,因为是边学习借鉴边摸索,碰到问题再上网查资料,有些顾此失彼了。

TA的精华主题

TA的得分主题

发表于 2021-3-11 09:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
老师,我有两个小问题
1.见您的代码中经常使用CommandBars.FindControl(ID:=).Execute这样的格式,请问,怎么知道每个内置命令的ID。
2.能否用这个代码去直接操控功能区上选字体,比如说把选定文本设置为黑体。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 18:30 , Processed in 0.037959 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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