ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] Word2003VBA 通用模板宏(2019元旦版)更新:2018-12-29

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-13 00:41 | 显示全部楼层
顶一下。这个版本是迄今为止最好,比较完美的版本了,虽然前两天我发现一个小BUG(就是,如果标题一后面紧跟着不是“一、XX”而是“九十九、XX”的段落的话,“九十九”这段会被当作标题来处理,解决方法也很简单:在《核心》宏中,把 《Title1》宏放到《Title2345AutoNum》宏后面即 OK!),但一般时候不太可能。

TA的精华主题

TA的得分主题

发表于 2019-1-18 10:25 | 显示全部楼层
413191246se 发表于 2019-1-3 11:02
排版前后字数不同,有可能是空格、半角、全角引起的,正常的汉字、数字、字母不会有误删的,请放心。如果不 ...

您好,可否帮忙做个定制版的格式。就是1/2/3/4级标题的字体、字号、行宽等,正文的字体、字号、行宽等。

TA的精华主题

TA的得分主题

发表于 2019-1-18 14:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
能有支持2010版的吗

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-19 00:20 | 显示全部楼层
* tanshuizhu 朋友,你好!——上次 Word/Excel 链接的事情没有帮到你,抱歉!
——如果想公文排版(热键F8),那么我的公文排版宏:样式是 Word2003 内置样式,格式是公文标准格式(公文标题四个层次是按照《2012年党政机关公文格式》标准设计的,行距是 1.5倍,相当于固定值 28/29 磅的行距,但2012年公文格式其实并未规定行距的,可以自由发挥)。除此之外,还有一个普通格式(热键F7)。无论是公文排版还是普通排版,均是一键完成。——如果这两种格式你均不满意,可以提出具体而详细的样式/格式要求(请上传附件或图片),我如果能办到的话可以帮你完成你想要的样式/格式(我手动不大会设置样式,只会 VBA 宏)。
*
* ywzx703 朋友,你好!——我的代码是在 Word2003 下完成的,是毫无问题的;在 2007 中可能也有适用的部分,但在 2010 中是否能适用不太清楚。我建议:你可以参考压缩包中的 Readme 说明文档导入代码,或复制代码到你的 Word 中,可以试运行一下;同时,在 VBE 中,对待每个宏均可以按 F8 键逐行调试。——另外,如果你对宏感兴趣,可以搜索网络查找关于录制宏的相关知识,搜索 VBA 帮助,自己也可以进行研究,以便提高排版效率。

TA的精华主题

TA的得分主题

发表于 2019-1-19 16:16 | 显示全部楼层
413191246se,老师您辛苦了,我对代码不懂,遇到问题就百度,逐段调试。针对我(win10 64位系统office2010)发现的问题做了调整:

1、 ActiveWindow.DocumentMapPercentWidth = 20 “文档结构图”改为
    ActiveWindow.DocumentMap = True
2、将  Title2345AutoNum 中
    With Selection
               .Expand 4
              .EndKey 6, 1
        Set r = .Range
    End With
改为
  With Selection
        Set r = .Range
    End With
3、去掉  Title2345AutoNum 中删除域代码  doc.Fields.Unlink,可用于生成目录文件。
4、将  Title1 宏放到 Title2345AutoNum 宏之后。
5、本机排版,docNew.content.PasteAndFormat Type:=wdFormatOriginalFormatting
改为         
  docNew.content.PasteAndFormat Type:=wdFormatOriginalFormatting
将源文档文字以纯文本方式粘贴到新建文档中,再将表格复制到临时文档,无法运行,改为保留源格式粘贴,可以运行。似乎还是不太理想,可以完成排版,无法生成备份文件(后缀加“-Old”)。新建的临时文件可以完成排版。。。  
电脑无法上传附件,希望老师能帮忙指点下。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-20 00:51 | 显示全部楼层
* 翼★虎,你好!
1、文档结构图代码,我也是录制的。改为20是为了文档显示比例更大一些;你是对的,两者差别不大。
2、这步修改,大错特错!——Title2345AutoNum:此宏功能是,将标题2/3/4/5各个标题的序号自动连续编号。它有两个用处:一是全文编号;一是自选区域编号。——你的修改,有可能使区域 r 变为一个插入点,什么文字/符号也不包括,即使不出错,也失去了此宏的作用(以前我修改代码,也是只会用一个 F8 逐行调试;最近我也学会了用《调试菜单——运行到光标处》,建议你也用用此命令,有好处)。——此宏如果不要,屏蔽/注释/删除掉会怎么样呢?结果就是,标题2345的序号如果有重复/错误,只好目视校对修改了,而不能自动修改编号;最好还是不要删除,以节省人力/精力,但此宏你要重新调试(.expand 4 意思是选定光标所在段落、.Endkey 6,1 意思是选定光标以后的所有内容)。
3、删除 Title2345AutoNum 中的删除域代码语句:其实如果不删除最后一行代码,待排版完毕,再插入目录,并不影响目录生成;另外,前几天我也试了一下,此宏中,只有标题2/3(例如:“一、XX”和“(一)XX”)需要用到域ChineseNum3,可以在标题2/3这两小步骤中加入 .Fields.Unlink 单独删除域,全文删除域的代码就可以删除了,但我没试验保留域是否打印时会影响版面,所以,此步我只能半支持你。
4、对了!Title1 标题一(也叫大标题)自动设置宏,放在哪里都行(当然了,不能放在预处理空格前),它不影响任何宏。但我前几天发现,如果标题一后面紧跟着比如“九十九、改革开放”这样的代码而没有被 Title2345AutoNum 宏自动编号为“一、XX”的话,“九十九、改革开放”这句会被当作标题一来处理。看来,我的帖子你是认真关注了。
5、本机排版:为什么会有此宏?因为如果正常一般状态下的话,样式格式是不会有太多的改变,正常的《公文排版》就能解决了,但有些文档样式/格式有与正常文档样式/格式不一致的地方,正常排版后有些段落看着也很怪怪的,甚至有的标题一显示蓝色,正常的一般是自动色的,明显说明该文档与一般正常文档不一样。其实在正常排版程序中再多加一些代码,也能搞定非正常文档的,但我不喜欢多加代码,因为大多数文档都是默认样式/格式,比较好搞定,用正常公文排版即可。——过去排版我都是连文字带表格一起处理,现在觉得还是文字是文字,表格是表格,不要一起处理。特别是处理别人拿来的文档,表格处理起来是相当麻烦的。所以我现在的思想也是,只处理文字,不处理表格;想要处理表格,用《表格处理》宏可以单独处理,再加后期手动调整。——此宏功能/算法思路:将源文档中所有表格拷贝到一个新建文档中,表格原位置留下记号“markmytable”;然后,将所有表格删除;再将源文档所有文字以纯文本格式粘贴到新建文档中,这样,源文档中的与正常一般性文档不一致的样式/格式通通不存在了,变成了一个就像在本机 Word 中新录入的一份崭新的文档一样,含有正常的内置样式/格式,再进行公文排版就是正常文档了,样式/格式均 OK!但删除的表格还要找回来复制到原来的位置;为防意外,特意将源文档改名为 *-Old,以与以旧文件名保存的新文档相对照。——建议:能用《公文》宏,或《普通》宏处理的,就不要用《本机排版》。
*
* 有问题请继续与我交流,我也很高兴与你交流,共同探讨、提高。
* 强烈建议:如果在你的 2010 版本中,经过改进,大多数代码运行良好,对文档自动排版有帮助,节省人力、精力,提高了处理文档的效率,我强烈建议你公开你的成果,即使不完全成熟,可能还会有错误,但是在 2010 版本这方面,你可能是自动排版第一人呢!可能有不少朋友正需要你的代码(我的所有代码,也是你的代码。它是完全免费的,没有版权的,你需要,这些代码就是你的。虽然大多数代码都是我编写的,但少量也有杜先生/老师duquancai、loquat老师,或其他前辈、老师的代码及经验借鉴,但我认为都是免费的、没有版权的,所有这些代码都是你的!)。——建议你可以发一个新帖:《Word2010VBA通用模板宏》或《Word2010VBA公文自动排版宏》等等,提供附件,供大家下载,导入代码进行工作。
*
* VBA 代码保存方法:对代码进行修改后,可以在任何时间,先点击“重新设置”按钮(我叫它“停止”按钮),再点击属性窗口中 NewMacros 模块,然后点击“文件”菜单中——“导出文件”命令,将 NewMacros.bas 文件保存于某个文件夹中(可以是“我的文档”中),位置定下来就不要变,如果没把握确定当前 Word 模板中保存的代码与导出的 NewMacros.bas 文件中的一致,就不要导出(此时,可以点击 NewMacros 模块,右键,选择“移除 NewMacros...",此时移除的是保存在 Word 中的代码,而不是保存在“我的文档”文件夹中 NewMacros.bas 文件中的代码;再选择移除时不保存现有模块内容,这样,当前打开的 Word 中就不存在 NewMacros 模块了!再点击 VBE 中“文件菜单”——“导入文件”命令,找到“我的文档”文件夹中的原先保存的 NewMacros.bas 按“打开”确定即可)。——简言之,就是:VBA 代码可以导出到任意文件夹中保存为 NewMacros.bas 的文本文件,也可以随时重新导入保存的内容。

TA的精华主题

TA的得分主题

发表于 2019-1-20 10:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-1-20 10:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
413191246se,老师原谅一个小白对你的大作提出不成熟的修改,谢谢你耐心解答:
1、Title2345AutoNum,功能在2010中会对原文中标题2/3(例如:“一、XX”和“(一)XX”)在替换域过程中会删除:选定光标所在段落,及段落以后所有内容。我只能逐行试着调整。这样确实相当于把该宏删除或者屏蔽,无法自动编号。
2、文件中将源文档文字以纯文本方式(wdFormatPlainText)黏贴在2010中无法正常运行。
3、我不懂VBA,只是在您的作品上删删减减,谈不到成果,更无法到达开贴助人的水平。怕耽误、误导人。倒是想请老师在百忙之余,完成《Word2010VBA通用模板宏》。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-21 09:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
翼★虎:下面 Title2345AutoNum 宏,我添加了两处取消域,分别是“标题2”、“标题3”段落,请将示例文档第一个标题2段落改为“九、XXX“,第一个标题3段落改为”(九)XXX“,试试此宏:
  1. Sub Title2345AutoNum()
  2.     Dim doc As Document, r As Range, i As Paragraph, b&, c&, d&, e&
  3.     Set doc = ActiveDocument
  4.     With Selection
  5.         .Expand 4
  6.         .EndKey 6, 1
  7.         Set r = .Range
  8.     End With
  9.     For Each i In r.Paragraphs
  10.         With i.Range
  11.             If Not .Information(12) Then
  12.                 If .Style = "标题 1" Or .Text Like "[!^13]附件*" Or .Text Like "附件*" Then
  13.                     b = 0: c = 0: d = 0: e = 0
  14.                 ElseIf .Style = "标题 2" Then
  15.                     c = 0: d = 0: e = 0
  16.                     b = b + 1
  17.                     With doc.Range(Start:=.Characters(1).Start, End:=.Characters(InStr(i.Range, "、")).End - 1)
  18.                         .Text = b
  19.                         .Delete
  20.                         .Fields.Add Range:=i.Range, Text:="= " & b & " \* CHINESENUM3"
  21.                         .Fields.Unlink
  22.                     End With
  23.                 ElseIf .Style = "标题 3" Then
  24.                     d = 0: e = 0
  25.                     c = c + 1
  26.                     With doc.Range(Start:=.Characters(1).Start, End:=.Characters(InStr(i.Range, ")")).End - 1)
  27.                         .Text = c
  28.                         .Delete
  29.                         .Fields.Add Range:=i.Range, Text:="= " & c & " \* CHINESENUM3"
  30.                         .Fields.Unlink
  31.                         .InsertBefore Text:="("
  32.                     End With
  33.                 ElseIf .Style = "标题 4" Then
  34.                     e = 0
  35.                     d = d + 1
  36.                     doc.Range(Start:=.Characters(1).Start, End:=.Characters(InStr(i.Range, ".")).End - 1).Text = d
  37.                 ElseIf .Style = "标题 5" Then
  38.                     e = e + 1
  39.                     With doc.Range(Start:=.Characters(1).Start, End:=.Characters(InStr(i.Range, ")")).End - 1)
  40.                         .Text = e
  41.                         .InsertBefore Text:="("
  42.                     End With
  43.                 End If
  44.             End If
  45.         End With
  46.     Next
  47. '    doc.Fields.Unlink'删除全文域
  48. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2019-1-21 13:37 | 显示全部楼层
413191246se,老师您辛苦了,谢谢你耐心解答。
我测试了下还是不理想。估计是版本问题造成选取对象不一致吧?浏览器出问题了,无法上传附件。老师见谅 。借用你的一个例文进行排版。

如何判断公文标题层次序号是连续的 1.标本兼治2.综合治理3.有效治理1.完善民主生活会制度11)不允许他们谋取私利24)公道正派用35)艰苦奋斗,不奢侈浪费2.充分发挥党组织的监督作用3.广泛开展批评和自我批评
中华人民共和国中华人民共和国中华人民共和国。
1.同党中央保持高度一致2.遵守民主集中制3.依法行使权利4.廉洁奉公
中华人民共和国中华人民共和国。
中华人民共和国中华人民中华人民共和国。



您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-9 14:29 , Processed in 0.034974 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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