Word 代码高亮
整理文档比较费事,提供个脚本放在VBA里,使Word 代码高亮的一种方法是改变颜色
'script to high light code In document Private Function isKeyword(w) As Boolean Dim keys As New Collection With keys .Add "onStart": .Add "Log": .Add "volatile": .Add "friend" .Add "abstract": .Add "long": .Add "while": .Add "if" .Add "Activity": .Add "native": .Add "FALSE": .Add "implements" .Add "asm": .Add "new": .Add "import" .Add "auto": .Add "new?": .Add "enabled": .Add "inlIne" .Add "bool": .Add "android": .Add "instanceof" .Add "boolean": .Add "onBind": .Add "receiver": .Add "int" .Add "boolean?": .Add "onCreate": .Add "exported": .Add "int?" .Add "break": .Add "onDestroy": .Add "filter": .Add "Intent" .Add "BroadcastReceiver": .Add "onRebind": .Add "action": .Add "interface" .Add "byte": .Add "onUnbind": .Add "category": .Add "isDebug?" .Add "case": .Add "package": .Add "application": .Add "synchronized" .Add "char": .Add "private": .Add "manifest": .Add "template" .Add "class": .Add "protected": .Add "xmlns": .Add "this" .Add "class?": .Add "protected?": .Add "version": .Add "throw?" .Add "const": .Add "public": .Add "encoding": .Add "transient" .Add "ContentProvider": .Add "register": .Add "utf": .Add "typename" .Add "continue": .Add "return": .Add "INTERNET": .Add "union" .Add "default": .Add "sendOrderBroadcast": .Add "RECEIVE_USER_PRESENT": .Add "unsigned" .Add "do": .Add "Service": .Add "WAKE_LOCK": .Add "virtual" .Add "double": .Add "short": .Add "READ_PHONE_STATE": .Add "void" .Add "else": .Add "signed": .Add "WRITE_EXTERNAL_STORAGE" .Add "enum": .Add "static": .Add "READ_EXTERNAL_STORAGE" .Add "explicit": .Add "static?": .Add "VIBRATE": .Add "CHANGE_WIFI_STATE" .Add "extends": .Add "strictfp": .Add "WRITE_SETTINGS": .Add "CHANGE_NETWORK_STATE" .Add "extern": .Add "String?": .Add "ACCESS_NETWORK_STATE": .Add "@" .Add "final": .Add "struct": .Add "ACCESS_WIFI_STATE": .Add "super" .Add "float": .Add "for": .Add "switch": .Add "typedef": .Add "sizeof" .Add "try": .Add "namespace": .Add "catch": .Add "operator" .Add "cast": .Add "NULL": .Add "null": .Add "delete": .Add "throw" .Add "dynamic": .Add "reinterpret": .Add "true": .Add "TRUE" .Add "pub": .Add "provider": .Add "authorities": .Add "Add": .Add "get": .Add "set" .Add "uses": .Add "permission": .Add "allowBackup" .Add "grant": .Add "URI": .Add "meta": .Add "data": .Add "false": .Add "string": .Add "integer" 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 ' set the style of selection Private Function isType(ByVal w As String) As Boolean Dim types As New Collection With types .Add "void": .Add "struct": .Add "union": .Add "enum": .Add "char": .Add "short": .Add "int" .Add "long": .Add "double": .Add "float": .Add "signed": .Add "unsigned": .Add "const": .Add "static" .Add "extern": .Add "auto": .Add "register": .Add "volatile": .Add "bool": .Add "class": .Add " private" .Add "protected": .Add "public": .Add "friend": .Add "inlIne": .Add "template": .Add "virtual" .Add "asm": .Add "explicit": .Add "typename" 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 = "java code" 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 ' 深绿色。lIne comment 水绿色 wdColorAutomatic wdColorBlueGray 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