Word使代码颜色不同(代码高亮)

2025-10-07 16:58:37

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

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

Word使代码颜色不同(代码高亮)

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

Word使代码颜色不同(代码高亮)

4、新建宏,步骤如图

Word使代码颜色不同(代码高亮)

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

Word使代码颜色不同(代码高亮)

6、'script to high light code In document

Private 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 Function

Private 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 = False

End Function

Private 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 Function

Private 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 Function

Sub 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

    SetLIneNumber

End Sub

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

Word使代码颜色不同(代码高亮)

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢