如何在word中插入代码段

本文介绍如何在Word中定义一个名为'ccode'的样式用于代码格式化,并通过宏脚本实现代码关键字、类型和运算符的高亮显示。宏包括isKeyword、isType和isOperator等函数,能识别并着色常见的编程元素。执行宏后,代码会以蓝色、暗红色和棕色分别显示关键字、类型和运算符,注释则显示为绿色。请注意,保存文档时需选择.docm格式以保留宏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 新定义一个样式,命名为"ccode",专门用来对代码进行格式化。由于是代码,所以推荐中文使用黑体(注释等),而英文使用等宽字体(courier new)。

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

  • 在视图中新建宏

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

  • '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

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


注意:由于此操作用到word中的宏,因此保存文件的时候需要保存为.docm格式,宏才能被正常显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值