ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 录制宏,实现样式自动应用,执行后与手工排版效果不同(附带录制宏代码)

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-11-7 08:16 | 显示全部楼层 |阅读模式
本帖最后由 信合小干事 于 2013-11-7 09:30 编辑

预想效果图

预想效果图
   
     各位高手不好意思,又打搅你们了,为了实行word按照宏模式自动排版,我录制了一个宏(手工编写不会,没有一点基础),全部是按照手工"Ctrl+H"制作的,在制作时,能出来我的预想效果,但是执行宏之后就与理想不同了。
问题:
   我的预想效果图是图片所呈现的(灰色部分),“第X章,第X条,(X),正文仿宋三号字体,无边框”等设置,但是执行宏后,只有“第X章”这部分是正确的,不同的是:全文字体是自带模板的字体,文章四周带边框,第X条没有加粗“,不知道出现了什么情况,请高手看看。
  通过这回学习,我发现是不是我的宏太繁琐了?
辛苦各位了!
录制宏.rar (5.11 KB, 下载次数: 27)
[code=vb]Sub 公文 ()'' 公文Macro' 宏在 2013/11/7 由 USER 录制'    Application.WindowState = wdWindowStateNormal    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find        .Text = "^p"        .Replacement.Text = ""        .Forward = True        .Wrap = wdFindContinue        .Format = False        .MatchCase = False        .MatchWholeWord = False        .MatchByte = True        .MatchWildcards = False        .MatchSoundsLike = False        .MatchAllWordForms = False    End With    Selection.Find.Execute Replace:=wdReplaceAll    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find        .Text = "-*-"        .Replacement.Text = ""        .Forward = True        .Wrap = wdFindContinue        .Format = False        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    With ActiveDocument.Styles(wdStyleNormal).Font        If .NameFarEast = .NameAscii Then            .NameAscii = ""        End If        .NameFarEast = ""    End With    With ActiveDocument.PageSetup        .LineNumbering.Active = False        .Orientation = wdOrientPortrait        .TopMargin = CentimetersToPoints(2.54)        .BottomMargin = CentimetersToPoints(2.54)        .LeftMargin = CentimetersToPoints(2.9)        .RightMargin = CentimetersToPoints(2.9)        .Gutter = CentimetersToPoints(0)        .HeaderDistance = CentimetersToPoints(1.5)        .FooterDistance = CentimetersToPoints(1.75)        .PageWidth = CentimetersToPoints(21)        .PageHeight = CentimetersToPoints(29.7)        .FirstPageTray = wdPrinterDefaultBin        .OtherPagesTray = wdPrinterDefaultBin        .SectionStart = wdSectionNewPage        .OddAndEvenPagesHeaderFooter = False        .DifferentFirstPageHeaderFooter = False        .VerticalAlignment = wdAlignVerticalTop        .SuppressEndnotes = False        .MirrorMargins = False        .TwoPagesOnOne = False        .BookFoldPrinting = False        .BookFoldRevPrinting = False        .BookFoldPrintingSheets = 1        .GutterPos = wdGutterPosLeft        .LayoutMode = wdLayoutModeLineGrid    End With    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find.Replacement.ParagraphFormat        .SpaceBeforeAuto = False        .SpaceAfterAuto = False        .Alignment = wdAlignParagraphLeft        .WordWrap = True    End With    Selection.Find.Replacement.ParagraphFormat.Borders.Shadow = False    With Selection.Find        .Text = "*"        .Replacement.Text = ""        .Forward = True        .Wrap = wdFindContinue        .Format = True        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find        .Text = "第[!章]{1,5}章"        .Replacement.Text = "^p^&"        .Forward = True        .Wrap = wdFindContinue        .Format = False        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    With Selection.Find        .Text = "第[!条]{1,5}条"        .Replacement.Text = "^p^&"        .Forward = True        .Wrap = wdFindContinue        .Format = False        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    With Selection.Find        .Text = "([!含])"        .Replacement.Text = "^p^&"        .Forward = True        .Wrap = wdFindContinue        .Format = False        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    Selection.Find.Replacement.Style = ActiveDocument.Styles("标题 2")    Selection.Find.Replacement.ParagraphFormat.Borders.Shadow = False    With Selection.Find        .Text = "第[!章]{1,5}章"        .Replacement.Text = ""        .Forward = True        .Wrap = wdFindContinue        .Format = True        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    Selection.Find.ClearFormatting    Selection.Find.Style = ActiveDocument.Styles("标题 2")    Selection.Find.ParagraphFormat.Borders.Shadow = False    Selection.Find.Replacement.ClearFormatting    With Selection.Find.Replacement.ParagraphFormat        .SpaceBeforeAuto = False        .SpaceAfterAuto = False        .Alignment = wdAlignParagraphCenter        .WordWrap = True    End With    Selection.Find.Replacement.ParagraphFormat.Borders.Shadow = False    With Selection.Find        .Text = "*"        .Replacement.Text = ""        .Forward = True        .Wrap = wdFindContinue        .Format = True        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    ActiveWindow.ActivePane.VerticalPercentScrolled = 64    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find.Replacement.ParagraphFormat        .SpaceBeforeAuto = False        .SpaceAfterAuto = False        .FirstLineIndent = CentimetersToPoints(0.35)        .CharacterUnitFirstLineIndent = 2        .WordWrap = True    End With    Selection.Find.Replacement.ParagraphFormat.Borders.Shadow = False    With Selection.Find        .Text = "第[!条]{1,5}条"        .Replacement.Text = ""        .Forward = True        .Wrap = wdFindContinue        .Format = True        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End With    Selection.Find.Execute Replace:=wdReplaceAll    With Selection.Font        .Borders(1).LineStyle = wdLineStyleNone        .Borders.Shadow = False    End With    With Options        .DefaultBorderLineStyle = wdLineStyleSingle        .DefaultBorderLineWidth = wdLineWidth050pt        .DefaultBorderColor = wdColorAutomatic    End With    Selection.Find.ClearFormatting    Selection.Find.Replacement.ClearFormatting    With Selection.Find.Replacement.ParagraphFormat        .SpaceBeforeAuto = False        .SpaceAfterAuto = False        .FirstLineIndent = CentimetersToPoints(0.35)        .CharacterUnitFirstLineIndent = 2        .WordWrap = True    End With    Selection.Find.Replacement.ParagraphFormat.Borders.Shadow = False    With Selection.Find        .Text = "第[!条]{1,5}条"        .Replacement.Text = ""        .Forward = True        .Wrap = wdFindContinue        .Format = True        .MatchCase = False        .MatchWholeWord = False        .MatchByte = False        .MatchAllWordForms = False        .MatchSoundsLike = False        .MatchWildcards = True    End WithEnd Sub[/code]



TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-7 17:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
自己搞定了,各位大神看来是晚上才有时间的,我贴出来代码,看看还能精简吗?有几个是变量需要弹出框设置,暂时还没有想出方案,希望能能与大神请教,谢谢了!
  1. Sub 公文设置()
  2. '
  3. ' 公文设置 Macro
  4. ' 宏在 2013/11/7 由 USER 创建
  5. '全文选取,设置仿宋字体,16号
  6.     Selection.WholeStory
  7.     'Word操作:Ctrl+A
  8.     Selection.Font.Name = "仿宋_GB2312"
  9.     Selection.Font.Size = 16
  10. ' 去掉段落标记
  11.    Selection.WholeStory
  12.     Selection.Find.ClearFormatting
  13.     Selection.Find.Replacement.ClearFormatting
  14.     With Selection.Find
  15.         .Text = "^p"
  16.         .Replacement.Text = ""
  17.         .Forward = True
  18.         .Wrap = wdFindContinue
  19.         .Format = False
  20.         .MatchCase = False
  21.         .MatchWholeWord = False
  22.         .MatchByte = False
  23.         .MatchWildcards = False
  24.         .MatchSoundsLike = False
  25.         .MatchAllWordForms = False
  26.     End With
  27.    Selection.Find.Execute Replace:=wdReplaceAll
  28.      '全部搜索
  29. ' 替换"-*-"
  30.   Selection.Find.Execute Replace:=wdReplaceAll
  31.     Selection.Find.ClearFormatting
  32.     Selection.Find.Replacement.ClearFormatting
  33.     With Selection.Find
  34.         .Text = "-*-"
  35.         .Replacement.Text = ""
  36.         .Forward = True
  37.         .Wrap = wdFindContinue
  38.         .Format = False
  39.         .MatchCase = False
  40.         .MatchWholeWord = False
  41.         .MatchByte = False
  42.         .MatchAllWordForms = False
  43.         .MatchSoundsLike = False
  44.         .MatchWildcards = True
  45.     End With
  46.      Selection.Find.Execute Replace:=wdReplaceAll
  47.      '全部搜索
  48. ' 查找 第*章 第*条 分段落
  49.    Selection.Find.ClearFormatting
  50.     Selection.Find.Replacement.ClearFormatting
  51.     With Selection.Find
  52.         .Text = "第[!章]{1,5}章"
  53.         .Replacement.Text = "^p^&"
  54.         .Forward = True
  55.         .Wrap = wdFindContinue
  56.         .Format = False
  57.         .MatchCase = False
  58.         .MatchWholeWord = False
  59.         .MatchByte = False
  60.         .MatchAllWordForms = False
  61.         .MatchSoundsLike = False
  62.         .MatchWildcards = True
  63.     End With
  64.     Selection.Find.Execute Replace:=wdReplaceAll
  65.      '全部搜索
  66.     With Selection.Find
  67.         .Text = "第[!条]{1,5}条"
  68.         .Replacement.Text = "^p^&"
  69.         .Forward = True
  70.         .Wrap = wdFindContinue
  71.         .Format = False
  72.         .MatchCase = False
  73.         .MatchWholeWord = False
  74.         .MatchByte = False
  75.         .MatchAllWordForms = False
  76.         .MatchSoundsLike = False
  77.         .MatchWildcards = True
  78.     End With
  79.    Selection.Find.Execute Replace:=wdReplaceAll
  80.      '全部搜索
  81. ' 替换以主题词开头至段落标记处,替换为空
  82.     Selection.Find.ClearFormatting
  83.     Selection.Find.Replacement.ClearFormatting
  84.     With Selection.Find
  85.         .Text = "主题词*^13"
  86.         .Replacement.Text = ""
  87.         .Forward = True
  88.         .Wrap = wdFindContinue
  89.         .Format = False
  90.         .MatchCase = False
  91.         .MatchWholeWord = False
  92.         .MatchByte = False
  93.         .MatchAllWordForms = False
  94.         .MatchSoundsLike = False
  95.         .MatchWildcards = True
  96.     End With
  97.    Selection.Find.Execute Replace:=wdReplaceAll
  98.      '全部搜索
  99. ' 对包含(*),内含一二三四五六七八九十,增加段落标记
  100.     Selection.Find.ClearFormatting
  101.     Selection.Find.Replacement.ClearFormatting
  102.     With Selection.Find
  103.         .Text = "([一二三四五六七八九十]@)"
  104.         .Replacement.Text = "^p^&"
  105.         .Forward = True
  106.         .Wrap = wdFindContinue
  107.         .Format = False
  108.         .MatchCase = False
  109.         .MatchWholeWord = False
  110.         .MatchByte = False
  111.         .MatchAllWordForms = False
  112.         .MatchSoundsLike = False
  113.         .MatchWildcards = True
  114.     End With
  115.     Selection.Find.Execute Replace:=wdReplaceAll
  116.      '全部搜索
  117. ' 对第*章,居中,字体设置
  118.    Selection.Find.ClearFormatting
  119.     Selection.Find.Replacement.ClearFormatting
  120.     Selection.Find.Replacement.Font.Name = "黑体"
  121.     '字体设置为黑体
  122.     Selection.Find.Replacement.Font.Bold = wdToggle
  123.     '字体加粗
  124.     Selection.Find.Replacement.Font.Size = 16
  125.     '字体设置为三号
  126.     Selection.Find.Replacement.ParagraphFormat.Alignment = wdAlignParagraphCenter
  127.     '段落居中
  128.     With Selection.Find
  129.         .Text = "第[!章]{1,5}章*^13"
  130.         .Replacement.Text = ""
  131.         .Format = True
  132.         '是否通配符
  133.         .MatchCase = False
  134.         .MatchWholeWord = False
  135.         .MatchByte = False
  136.         .MatchAllWordForms = False
  137.         .MatchSoundsLike = False
  138.         .MatchWildcards = True
  139.     End With
  140.    Selection.Find.Execute Replace:=wdReplaceAll
  141.      '全部搜索
  142. ' 对第*条,居中,字体设置
  143.     Selection.Find.ClearFormatting
  144.     Selection.Find.Replacement.ClearFormatting
  145.     Selection.Find.Replacement.Font.Name = "仿宋_GB2312"
  146.      '字体设置为仿宋_GB2312
  147.     Selection.Find.Replacement.Font.Bold = wdToggle
  148.      '字体加粗
  149.     Selection.Find.Replacement.Font.Size = 16
  150.      '字体设置为三号
  151.     With Selection.Find.Replacement.ParagraphFormat
  152.         .SpaceBeforeAuto = False
  153.         .SpaceAfterAuto = False
  154.         .FirstLineIndent = CentimetersToPoints(0.35)
  155.         .CharacterUnitFirstLineIndent = 2
  156.         '首行缩进2个字符
  157.          End With
  158.     With Selection.Find
  159.         .Text = "第[!条]{1,5}条"
  160.         .Replacement.Text = ""
  161.         .Forward = True
  162.         .Wrap = wdFindContinue
  163.         .Format = True
  164.        '是否通配符
  165.         .MatchCase = False
  166.         .MatchWholeWord = False
  167.         .MatchByte = False
  168.         .MatchAllWordForms = False
  169.         .MatchSoundsLike = False
  170.         .MatchWildcards = True
  171.     End With
  172.    Selection.Find.Execute Replace:=wdReplaceAll
  173.     '全盘搜索
  174. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2013-11-8 10:33 | 显示全部楼层
楼主,不知道我有 Word 2003 通用模板 吗?——里面有“第一章、第一条”的宏

TA的精华主题

TA的得分主题

发表于 2015-6-16 17:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
高手啊,正则表达式用得相当熟了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 02:37 , Processed in 0.024763 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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