ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] word中如何用宏实现替换功能

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-5-1 10:35 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
各位大师:一张试卷排版的时候,总是想把文章中的字母替换成Times New Roman斜体,还有把出现Cambria Math的字体替换Times New Roman,能不能通过宏的形式来实现,要不然每次替换很麻烦。
同时如果把纸张设为A4,左右上下页边距设为2cm,页脚插入自动图文集 第x页,共y页,段落设为单倍行距,所有文字(数字和字母除外)设为五号宋体,一起加进去就更好了!恳请哪位大师帮帮忙啊!

TA的精华主题

TA的得分主题

发表于 2019-5-1 11:09 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-1 17:30 | 显示全部楼层
谢谢,这个是用替换功能,每套试卷都有这样做,比较麻烦,能不能把它编辑成宏,然后只要运行宏就能完成这么复杂的过程就好了

TA的精华主题

TA的得分主题

发表于 2019-5-2 01:17 | 显示全部楼层
  1. Sub aaaa试卷排版()
  2. '使用方法:在 Word 界面,按 Alt + F8 打开宏名列表,找到本宏双击(或点击“运行”按钮)即可!也可以设置热键。
  3.     With ActiveDocument
  4.         '回车符/手动换行符=>段落标记
  5.         .Content.Find.Execute "[^13^11]", , , 1, , , , , , "^p", 2

  6.         '删除所有域
  7.         .Fields.Unlink

  8.         '列表编号/LISTNUM域转文本
  9.         .ConvertNumbersToText

  10.         '半角括号转全角(此部分酌情处理)
  11. '        With .Content.Find
  12. '            .Execute "(", , , , , , , , , "(", 2
  13. '            .Execute ")", , , , , , , , , ")", 2
  14. '        End With

  15.         '删除空行
  16.         Dim i As Paragraph
  17.         For Each i In .Paragraphs
  18.             If Asc(i.Range) = 13 Then i.Range.Delete
  19.         Next

  20.         '全选/清除格式/首行缩进2字符
  21.         .Select
  22.         With Selection
  23.             .ClearFormatting
  24.             .ParagraphFormat.CharacterUnitFirstLineIndent = 2
  25.         End With

  26.         '首行设为标题一样式/居中
  27.         With .Paragraphs(1).Range
  28.             .Style = wdStyleHeading1
  29.             .ParagraphFormat.Alignment = wdAlignParagraphCenter
  30.         End With

  31.         '全文查找英文和字母设置为斜体
  32.         With .Content.Find
  33.             .ClearFormatting
  34.             .Text = "[^1-^12^14-^127]"
  35.             .Forward = True
  36.             .MatchWildcards = True
  37.             Do While .Execute
  38.                 With .Parent
  39.                     .Font.Italic = True
  40.                     .Font.Color = wdColorRed '红色(本行代码可删除!如果不删除,打印时要设全文为黑色!)
  41.                     .Start = .End
  42.                 End With
  43.             Loop
  44.         End With

  45.         '页面设置
  46.         Dim s As Section
  47.         For Each s In .Sections
  48.             With s.PageSetup
  49.                 If .Orientation = wdOrientPortrait Then
  50.                     .TopMargin = CentimetersToPoints(2)
  51.                     .BottomMargin = CentimetersToPoints(2)
  52.                     .LeftMargin = CentimetersToPoints(2)
  53.                     .RightMargin = CentimetersToPoints(2)
  54.                     .PageWidth = CentimetersToPoints(21)
  55.                     .PageHeight = CentimetersToPoints(29.7)
  56.                 Else
  57.                     .TopMargin = CentimetersToPoints(2)
  58.                     .BottomMargin = CentimetersToPoints(2)
  59.                     .LeftMargin = CentimetersToPoints(2)
  60.                     .RightMargin = CentimetersToPoints(2)
  61.                     .PageWidth = CentimetersToPoints(29.7)
  62.                     .PageHeight = CentimetersToPoints(21)
  63.                 End If
  64.                 .HeaderDistance = CentimetersToPoints(1.5)
  65.                 .FooterDistance = CentimetersToPoints(1.75)
  66.             End With
  67.         Next
  68.     End With

  69. '页码设置
  70.     With Selection
  71.         ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
  72.         .ParagraphFormat.Alignment = wdAlignParagraphCenter
  73.         NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=Selection.Range, RichText:=True
  74.         ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
  75.         .HomeKey Unit:=wdStory
  76.     End With
  77. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2019-5-2 11:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 相见是缘8 于 2019-5-2 11:27 编辑

With ActiveDocument
  With .Paragraphs(1).Range
         .ParagraphFormat.Alignment = wdAlignParagraphCenter
    End With

第一段作为文章的标题,居中后想变为红色加粗,代码怎么改?请老师指教,谢谢!

TA的精华主题

TA的得分主题

发表于 2019-5-2 12:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
相见是缘8 发表于 2019-5-2 11:25
With ActiveDocument
  With .Paragraphs(1).Range
         .ParagraphFormat.Alignment = wdAlignPar ...

With ActiveDocument
  With .Paragraphs(1).Range
         .ParagraphFormat.Alignment = wdAlignParagraphCenter
         .Font.ColorIndex = wdRed
         .Font.Bold = True
    End With
   End With
录个宏,就明白了

TA的精华主题

TA的得分主题

发表于 2019-5-2 15:14 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
daibao88 发表于 2019-5-2 12:40
With ActiveDocument
  With .Paragraphs(1).Range
         .ParagraphFormat.Alignment = wdAlignPar ...

感谢老师指教!谢谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-2 15:41 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
谢谢老师,辛苦了,我运行了一下就是字母出现了斜体,符合要求但是数字也出现斜体,能不能数字还是time New Roman但不是斜体,同时加上 Cambria Math的字体替换Times New Roman就好了,首行的字体能不能设置成四号楷体居中,第二行设置成小三黑体居中行距设为单倍行距就完美了,能不能再修改一下!

TA的精华主题

TA的得分主题

发表于 2019-5-3 01:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub aaaa试卷排版_v2019_5_3()
  2. '使用方法:在 Word 界面,按 Alt + F8 打开宏名列表,找到本宏双击(或点击“运行”按钮)即可!也可以设置热键。
  3.     With ActiveDocument
  4.         '回车符/手动换行符=>段落标记
  5.         .Content.Find.Execute "[^13^11]", , , 1, , , , , , "^p", 2

  6.         '删除所有域
  7.         .Fields.Unlink

  8.         '列表编号/LISTNUM域转文本
  9.         .ConvertNumbersToText

  10.         '半角括号转全角(此部分酌情处理)
  11. '        With .Content.Find
  12. '            .Execute "(", , , , , , , , , "(", 2
  13. '            .Execute ")", , , , , , , , , ")", 2
  14. '        End With

  15.         '删除空行
  16.         Dim i As Paragraph
  17.         For Each i In .Paragraphs
  18.             If Asc(i.Range) = 13 Then i.Range.Delete
  19.         Next

  20.         '全选/清除格式/首行缩进2字符
  21.         .Select '全选
  22.         With Selection
  23.             .ClearFormatting '清除格式(全部字符变为五号字体,汉字变为宋体,字母和数字变为 Times New Roman)
  24.             '取消网格
  25.             With .Font
  26.                 .Kerning = 0
  27.                 .DisableCharacterSpaceGrid = True
  28.             End With
  29.             With .ParagraphFormat
  30.                 .CharacterUnitFirstLineIndent = 2 '首行缩进2字符
  31.                 .AutoAdjustRightIndent = False
  32.                 .DisableLineHeightGrid = True
  33.             End With
  34.         End With

  35.         '首行:四号/楷体/居中
  36.         With .Paragraphs(1).Range
  37.             .Style = wdStyleHeading1
  38.             With .Font
  39.                 .NameFarEast = "楷体_GB2312" '如果是Win7系统,请将字体改为“楷体”(即删除“_GB2312”)
  40.                 .Size = 14 '四号(14磅)
  41.             End With
  42.             .ParagraphFormat.Alignment = wdAlignParagraphCenter '居中
  43.         End With

  44.         '次行:小三/黑体/居中/单倍行距
  45.         With .Paragraphs(2).Range
  46.             .Style = wdStyleSubtitle
  47.             With .Font
  48.                 .NameFarEast = "黑体"
  49.                 .Size = 15 '小三(15磅)
  50.                 .Bold = False '不加粗(如果想加粗,删除本行即可)
  51.             End With
  52.             With .ParagraphFormat
  53.                 .Alignment = wdAlignParagraphCenter '居中
  54.                 .Space1 '单倍行距
  55.             End With
  56.         End With

  57.         '取消第1/2段落的段落间距
  58.         With .Range(Start:=0, End:=.Paragraphs(2).Range.End).ParagraphFormat
  59.             .SpaceBefore = 0
  60.             .SpaceAfter = 0
  61.         End With

  62.         '字母设为斜体(全文查找)
  63.         With .Content.Find
  64.             .ClearFormatting
  65.             .Text = "[^1-^12^14-^47^58-^127]"
  66.             .Forward = True
  67.             .MatchWildcards = True
  68.             Do While .Execute
  69.                 With .Parent
  70.                     .Font.Italic = True
  71.                     .Font.Color = wdColorRed '红色(本行代码可删除!如果不删除,打印时要设全文为黑色!)
  72.                     .Start = .End
  73.                 End With
  74.             Loop
  75.         End With

  76.         '页面设置
  77.         Dim s As Section
  78.         For Each s In .Sections
  79.             With s.PageSetup
  80.                 If .Orientation = wdOrientPortrait Then
  81.                     .TopMargin = CentimetersToPoints(2)
  82.                     .BottomMargin = CentimetersToPoints(2)
  83.                     .LeftMargin = CentimetersToPoints(2)
  84.                     .RightMargin = CentimetersToPoints(2)
  85.                     .PageWidth = CentimetersToPoints(21)
  86.                     .PageHeight = CentimetersToPoints(29.7)
  87.                 Else
  88.                     .TopMargin = CentimetersToPoints(2)
  89.                     .BottomMargin = CentimetersToPoints(2)
  90.                     .LeftMargin = CentimetersToPoints(2)
  91.                     .RightMargin = CentimetersToPoints(2)
  92.                     .PageWidth = CentimetersToPoints(29.7)
  93.                     .PageHeight = CentimetersToPoints(21)
  94.                 End If
  95.                 .HeaderDistance = CentimetersToPoints(1.5)
  96.                 .FooterDistance = CentimetersToPoints(1.75)
  97.             End With
  98.         Next
  99.     End With

  100. '页码设置
  101.     With Selection
  102.         ActiveWindow.ActivePane.View.SeekView = wdSeekCurrentPageFooter
  103.         .ParagraphFormat.Alignment = wdAlignParagraphCenter
  104.         NormalTemplate.AutoTextEntries("第 X 页 共 Y 页").Insert Where:=Selection.Range, RichText:=True
  105.         ActiveWindow.ActivePane.View.SeekView = wdSeekMainDocument
  106.         .HomeKey Unit:=wdStory
  107.     End With
  108. '''
  109. '''
  110. '''
  111. 'Cambria Math字体全部替换为 Times New Roman 字体
  112. '其实先前的《清除格式 .ClearFormatting》命令已经把所有西文变为 Times New Roman 字体,但是,楼主 既然要求替换字体
  113. '我就用下面的代码完成替换了,但是,我认为其实下面的代码是不必要的!另外,我的电脑上无此字体。
  114.     With ActiveDocument.Content.Find
  115.         .ClearFormatting
  116.         .Font.Name = "Cambria Math"
  117.         With .Replacement
  118.             .ClearFormatting
  119.             .Font.Name = "Times New Roman"
  120.         End With
  121.         .Execute FindText:="", ReplaceWith:="", Format:=True, Replace:=wdReplaceAll
  122.     End With
  123. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-5-4 18:23 | 显示全部楼层
谢谢老师,我运行了一下已经很不错了,以后试卷的排版很方便了,就是不知道第一行设的是楷体,为什么运行了还是黑体,这个当然是个小问题啦,真是万分感谢老师的指导!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-24 22:54 , Processed in 0.038511 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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