多语言展示
当前在线:1375今日阅读:61今日分享:18

word中插入漂亮的代码

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

Word

方法/步骤
1

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

2

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

3

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

4

新建宏,步骤如图

5

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

6

'script to high light code In documentPrivate Function isKeyword(w) As Boolean    Dim keys As New Collection    With keys        .Add 'if': .Add 'else': .Add 'elseif': .Add 'case': .Add 'switch': .Add 'break'        .Add 'for': .Add 'continue': .Add 'do': .Add 'while': .Add 'foreach': .Add 'echo'        .Add 'define': .Add 'array': .Add 'NULL': .Add 'function': .Add 'include': .Add 'return'        .Add 'global': .Add 'as': .Add 'die': .Add 'header': .Add 'this': .Add 'empty'        .Add 'isset': .Add 'mysql_fetch_assoc': .Add 'class': .Add 'style'        .Add 'name': .Add 'value': .Add 'type': .Add 'width': .Add '_POST': .Add '_GET'    End With    isKeyword = isSpecial(w, keys)End FunctionPrivate Function isSpecial(ByVal w As String, ByRef col As Collection) As Boolean    For Each i In col        If w = i Then            isSpecial = True            Exit Function        End If    Next    isspeical = FalseEnd FunctionPrivate Function isOperator(w) As Boolean    Dim ops As New Collection    With ops        .Add '+': .Add '-': .Add '*': .Add '/': .Add '&': .Add '^': .Add ';'        .Add '%': .Add '#': .Add '!': .Add ':': .Add ',': .Add '.'        .Add '||': .Add '&&': .Add '|': .Add '=': .Add '++': .Add '--'        .Add ''': .Add ''''    End With    isOperator = isSpecial(w, ops)End FunctionPrivate Function isType(ByVal w As String) As Boolean    Dim types As New Collection    With types        .Add 'SELECT': .Add 'FROM': .Add 'WHERE': .Add 'INSERT': .Add 'INTO': .Add 'VALUES': .Add 'ORDER'        .Add 'BY': .Add 'LIMIT': .Add 'ASC': .Add 'DESC': .Add 'UPDATE': .Add 'DELETE': .Add 'COUNT'        .Add 'html': .Add 'head': .Add 'title': .Add 'body': .Add 'p': .Add 'h1': .Add ' h2'        .Add 'h3': .Add 'center': .Add 'ul': .Add 'ol': .Add 'li': .Add 'a'        .Add 'input': .Add 'form': .Add 'b'    End With    isType = isSpecial(w, types)End FunctionSub SyntaxHighlight()    Dim wordCount As Integer    Dim d As Integer    ' set the style of selection    Selection.Style = 'ccode'    d = 0    wordCount = Selection.Words.Count    Selection.StartOf wdWord    While d < wordCount        d = d + Selection.MoveRight(wdWord, 1, wdExtend)        w = Selection.Text        If isKeyword(Trim(w)) = True Then            Selection.Font.Color = wdColorBlue        ElseIf isType(Trim(w)) = True Then            Selection.Font.Color = wdColorDarkRed            Selection.Font.Bold = True        ElseIf isOperator(Trim(w)) = True Then            Selection.Font.Color = wdColorBrown        ElseIf Trim(w) = '//' Then            'lIne comment            Selection.MoveEnd wdLine, 1            commentWords = Selection.Words.Count            d = d + commentWords            Selection.Font.Color = wdColorGreen            Selection.MoveStart wdWord, commentWords         ElseIf Trim(w) = '/*' Then            'block comment            While Selection.Characters.Last <> '/'                Selection.MoveLeft wdCharacter, 1, wdExtend                Selection.MoveEndUntil ('*')                Selection.MoveRight wdCharacter, 2, wdExtend            Wend            commentWords = Selection.Words.Count            d = d + commentWords            Selection.Font.Color = wdColorGreen            Selection.MoveStart wdWord, commentWords        End If        'move the start of selection to next word        Selection.MoveStart wdWord    Wend    ' prepare For set lIne number    Selection.MoveLeft wdWord, wordCount, wdExtend    SetLIneNumberEnd SubPrivate Sub SetLIneNumber()    Dim lines As Integer    lines = Selection.Paragraphs.Count    Selection.StartOf wdParagraph    For l = 1 To lines        lIneNum = l & ' '        If l < 10 Then            lIneNum = lIneNum & ' '        End If        Selection.Text = lIneNum        Selection.Font.Bold = False        Selection.Font.Color = wdColorAutomatic        p = Selection.MoveDown(wdLine, 1, wdMove)        Selection.StartOf wdLine    Next End Sub

7

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

注意事项
1

处理前一定要对原文章进行备份,以免前功尽弃。

2

处理较长代码时需要一定时间,请耐心等待。

推荐信息