Word中怎么设置代码高亮?word中关键字高亮的设置方法

所属分类: 软件教程 / 办公软件 阅读数: 1023
收藏 0 赞 0 分享

有时写文档时需要将代码粘贴到word中,但直接粘贴到word中的代码虽能保持换行与缩进等格式,但在一般代码编辑工具中的关键字高亮功能却无法实现。该方法无需任何插件,只需要制作一个宏即可实现类似sublime的显示效果

1、首先完成当前所有内容,建议把代码放入单独的文本框中,方便处理,也有较好的视觉效果。记得一定要拷贝一份副本!因为很可能因为代码量比较多,处理宏的时候卡死,只能强制退出WORD了。

2、当前文档新定义一个样式,命名为"code",专门用来对代码进行格式化。由于是代码,所以推荐中文使用黑体(注释等),而英文使用等宽字体(courier new)。步骤如图。

3、选中代码,单击样式库 ccode,将代码应用该样式

4、新建宏,步骤如图

5、将VBA代码(在下一步中)拷贝进去,保存后关闭 (有VBA或相关程序经验者可根据自己需要进行相关修改,如关键词和高亮颜色等)

复制内容到剪贴板
  1. 'script to high light code In document  
  2.  
  3. Private Function isKeyword(w) As Boolean  
  4.  
  5. Dim keys As New Collection  
  6.  
  7. With keys  
  8.  
  9. .Add "if": .Add "else": .Add "elseif": .Add "case": .Add "switch": .Add "break"  
  10.  
  11. .Add "for": .Add "continue": .Add "do": .Add "while": .Add "foreach": .Add "echo"  
  12.  
  13. .Add "define": .Add "array": .Add "NULL": .Add "function": .Add "include": .Add "return"  
  14.  
  15. .Add "global": .Add "as": .Add "die": .Add "header": .Add "this": .Add "empty"  
  16.  
  17. .Add "isset": .Add "mysql_fetch_assoc": .Add "class": .Add "style"  
  18.  
  19. .Add "name": .Add "value": .Add "type": .Add "width": .Add "_POST": .Add "_GET"  
  20.  
  21. End With  
  22.  
  23. isKeyword = isSpecial(w, keys)  
  24.  
  25. End Function  
  26.  
  27. Private Function isSpecial(ByVal w As String, ByRef col As Collection) As Boolean  
  28.  
  29. For Each i In col  
  30.  
  31. If w = i Then  
  32.  
  33. isSpecial = True  
  34.  
  35. Exit Function  
  36.  
  37. End If  
  38.  
  39. Next  
  40.  
  41. isspeical = False  
  42.  
  43. End Function  
  44.  
  45. Private Function isOperator(w) As Boolean  
  46.  
  47. Dim ops As New Collection  
  48.  
  49. With ops  
  50.  
  51. .Add "+": .Add "-": .Add "*": .Add "/": .Add "&": .Add "^": .Add ";"  
  52.  
  53. .Add "%": .Add "#": .Add "!": .Add ":": .Add ",": .Add "."  
  54.  
  55. .Add "||": .Add "&&": .Add "|": .Add "=": .Add "++": .Add "--"  
  56.  
  57. .Add "'": .Add """"  
  58.   
  59. End With   
  60.   
  61. isOperator = isSpecial(w, ops)   
  62.   
  63. End Function   
  64.   
  65. Private Function isType(ByVal w As String) As Boolean   
  66.   
  67. Dim types As New Collection   
  68.   
  69. With types   
  70.   
  71. .Add "SELECT": .Add "FROM": .Add "WHERE": .Add "INSERT": .Add "INTO": .Add "VALUES": .Add "ORDER"  
  72.   
  73. .Add "BY": .Add "LIMIT": .Add "ASC": .Add "DESC": .Add "UPDATE": .Add "DELETE": .Add "COUNT"  
  74.   
  75. .Add "html": .Add "head": .Add "title": .Add "body": .Add "p": .Add "h1": .Add " h2"  
  76.   
  77. .Add "h3": .Add "center": .Add "ul": .Add "ol": .Add "li": .Add "a"  
  78.   
  79. .Add "input": .Add "form": .Add "b"  
  80.   
  81. End With   
  82.   
  83. isType = isSpecial(w, types)   
  84.   
  85. End Function   
  86.   
  87. Sub SyntaxHighlight()   
  88.   
  89. Dim wordCount As Integer   
  90.   
  91. Dim d As Integer   
  92.   
  93. ' set the style of selection  
  94.  
  95. Selection.Style = "ccode"  
  96.  
  97. d = 0  
  98.  
  99. wordCount = Selection.Words.Count  
  100.  
  101. Selection.StartOf wdWord  
  102.  
  103. While d < wordCount  
  104.  
  105. d = d + Selection.MoveRight(wdWord, 1, wdExtend)  
  106.  
  107. w = Selection.Text  
  108.  
  109. If isKeyword(Trim(w)) = True Then  
  110.  
  111. Selection.Font.Color = wdColorBlue  
  112.  
  113. ElseIf isType(Trim(w)) = True Then  
  114.  
  115. Selection.Font.Color = wdColorDarkRed  
  116.  
  117. Selection.Font.Bold = True  
  118.  
  119. ElseIf isOperator(Trim(w)) = True Then  
  120.  
  121. Selection.Font.Color = wdColorBrown  
  122.  
  123. ElseIf Trim(w) = "//" Then  
  124.  
  125. 'lIne comment   
  126.   
  127. Selection.MoveEnd wdLine, 1   
  128.   
  129. commentWords = Selection.Words.Count   
  130.   
  131. d = d + commentWords   
  132.   
  133. Selection.Font.Color = wdColorGreen   
  134.   
  135. Selection.MoveStart wdWord, commentWords   
  136.   
  137. ElseIf Trim(w) = "/*" Then   
  138.   
  139. 'block comment  
  140.  
  141. While Selection.Characters.Last <> "/"  
  142.  
  143. Selection.MoveLeft wdCharacter, 1, wdExtend  
  144.  
  145. Selection.MoveEndUntil ("*")  
  146.  
  147. Selection.MoveRight wdCharacter, 2, wdExtend  
  148.  
  149. Wend  
  150.  
  151. commentWords = Selection.Words.Count  
  152.  
  153. d = d + commentWords  
  154.  
  155. Selection.Font.Color = wdColorGreen  
  156.  
  157. Selection.MoveStart wdWord, commentWords  
  158.  
  159. End If  
  160.  
  161. 'move the start of selection to next word   
  162.   
  163. Selection.MoveStart wdWord   
  164.   
  165. Wend   
  166.   
  167. ' prepare For set lIne number   
  168.   
  169. Selection.MoveLeft wdWord, wordCount, wdExtend   
  170.   
  171. SetLIneNumber   
  172.   
  173. End Sub   
  174.   
  175. Private Sub SetLIneNumber()   
  176.   
  177. Dim lines As Integer   
  178.   
  179. lines = Selection.Paragraphs.Count   
  180.   
  181. Selection.StartOf wdParagraph   
  182.   
  183. For l = 1 To lines   
  184.   
  185. lIneNum = l & " "  
  186.   
  187. If l < 10 Then   
  188.   
  189. lIneNum = lIneNum & " "  
  190.   
  191. End If   
  192.   
  193. Selection.Text = lIneNum   
  194.   
  195. Selection.Font.Bold = False   
  196.   
  197. Selection.Font.Color = wdColorAutomatic   
  198.   
  199. p = Selection.MoveDown(wdLine, 1, wdMove)   
  200.   
  201. Selection.StartOf wdLine   
  202.   
  203. Next   
  204.   
  205. End Sub   
  206.   

6、选定代码文本,然后执行highlight脚本:“视图”-“宏”- 选中“SyntaxHighlight”-“运行”,然后执行就可以了。处理较长代码时需要一定时间,请耐心等待。

注意事项:处理前一定要对原文章进行备份,以免前功尽弃。处理较长代码时需要一定时间,请耐心等待。

更多精彩内容其他人还在看

Word复制粘贴文档文字显示不全该怎么办?

Word复制粘贴文档文字显示不全该怎么办?word中复制文字粘贴以后发现一行文字不能全部显示,该怎么办呢?下面我们就来看看这个问题的解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

excel表格中不规则单元格怎么求和?

excel表格中不规则单元格怎么求和?excel中有很多表格是不规则的,想要对不规则的单元格进行求和,该怎么办呢?下面我们就来看看这个问题的解决办法,需要的朋友可以参考下
收藏 0 赞 0 分享

ppt模板复制粘贴后幻灯片中色调变了该怎么解决?

ppt模板复制粘贴后幻灯片中色调变了该怎么解决?从网上下载了ppt模板,但是发现复制粘贴以后幻灯片中的色调变了,该怎么解决这个问题呢?下面我们就来看看详细的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

在Word2003文档中如何快速输入重叠字?

在Word2003文档中如何快速输入重叠字呢?对于这个问题很多朋友都在问,不用担心,下面小编将为大家带来在Word2003文档中快速输入重叠字的方法;有需要的朋友一起去看看吧
收藏 0 赞 0 分享

在Office 2016中删除宏的图文教程

如何在Office 2016中删除宏呢?下面小编将为大家分享在Office 2016中删除宏的图文教程;希望能够帮助到大家!有需要的朋友一起去看看吧
收藏 0 赞 0 分享

WPS office文档中如何插入脚注?

WPS Office 是由金山软件股份有限公司自主研发的一款办公软件套装,可以实现办公软件最常用的文字、表格、演示等多种功能。WPS office文档中如何插入脚注呢?下面小编将为大家带来WPS office文档中插入脚注的方法;有需要的朋友一起去看看吧
收藏 0 赞 0 分享

excel通过access建立数据透视表的方法

excel通过access建立数据透视表也是我们工作中经常用到的!可是excel通过access如何建立数据透视表呢?今天小编为大家带来的是excel通过access建立数据透视表的方法;有需要的朋友一起去看看吧
收藏 0 赞 0 分享

word为图片添加边框方法介绍

我们在使用Word编辑文档的过程中,为了使文档中的图片更加漂亮,有时需要为图片添加边框,小编就为大家详细介绍一下,推荐到脚本之家,一起来看看吧
收藏 0 赞 0 分享

轻快PDF阅读器怎么给pdf文件添加书签?

轻快PDF阅读器怎么给pdf文件添加书签?pdf文档需要添加书签,该怎么添加呢?下面我们就来看看轻快PDF阅读器添加书签的教程,需要的朋友可以参考下
收藏 0 赞 0 分享

word2003怎么对文档中的文字进行分栏?

在Word中,我们可以对一篇文章进行分栏设置,分两栏,分三栏都可以自己设置。像我们平常看到的报纸、公告、卡片、海报上面都可以有用Word分栏的效果,word2003怎么对文档中的文字进行分栏?下面小编就为大家介绍一下,来看看吧
收藏 0 赞 0 分享
查看更多