首页 > 办公 > Word > 正文

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

2019-12-13 12:39:36
字体:
来源:转载
供稿:网友

有时写文档时需要将代码粘贴到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”-“运行”,然后执行就可以了。处理较长代码时需要一定时间,请耐心等待。

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表