zoukankan      html  css  js  c++  java
  • Word中的代码怎样语法高亮

    在平常我们粘贴代码到Word中的时候,经常会遇到代码粘贴到Word中后没有语法高亮,看着很乱很不友好,Word自带的样式---语法使用着也不尽人意,

    网上有很多做法可以使得在插入在Word中的代码能够高亮显示,有使用notepad++先编辑再复制到Word中的,

    也有使用网上的代码复制到转换网站,然后再复制到Word实现代码高亮,也有使用Word插件的,

    但是这些方法个人认为多次转换复制太过麻烦,Word插件用着自己又觉得不太放心,故,这里介绍使用Word宏来实现语法高亮

    此宏的代码一部分来自互联网,原作者不是太清楚,在这里感谢提供基础源码的作者,这里附上链接https://www.xuebuyuan.com/1843358.html

    建议把这个宏做成模板,需要使用的时候引入模板即可,此处我做好的模板可以在这里下载 template

    Linux 下可用命令的高亮支持这里只做了一部分的命令,如果要支持所有的Linux可用命令,请自行添加。

    如果要添加关键字支持Linux下所有命令的高亮显示,请注意

      1、添加命令的关键字在VB集合中时要注意,定义在单个函数中用 :Add "keyword" 添加的关键字不宜过多,否则在执行宏时会报“执行过程过长”的错误

      2、解决的办法是用多个函数来定义关键字集合,然后再在高亮显示的执行函数中做处理即可。

    为了让代码看起来更加整洁,这里我们将代码写在1 X 1 的表格中,原始效果如图:

    接下来使用宏来进行语法着色,效果如下:

    以下贴出源代码,供大家参考,此代码一部分来自互联网,原作者不是太清楚,在这里感谢提供基础源码的作者,这里附上链接 https://www.xuebuyuan.com/1843358.html

    以下是我个人二次开发的源代码,还有一些不足的地方,甚至一些小BUG(个人对VB不是很了解),只能实现上述一些基本功能,希望大家能够继续改进,讨论交流和评论

    有兴趣的也可以进行二次开发,实现自己需要的功能。

      1 '宏在2019 年 8 月 2 日创建
      2 ' 作者:ZhongYuanMei
      3 
      4 '设置行号
      5 Private Sub SetLIneNumber()
      6 
      7     Dim lines As Integer
      8 
      9     lines = Selection.Paragraphs.Count
     10 
     11     Selection.StartOf wdParagraph
     12 
     13     For l = 1 To lines
     14 
     15         lIneNum = l & "   "
     16 
     17         If l < 10 Then
     18 
     19             lIneNum = lIneNum & " "
     20 
     21         End If
     22 
     23         Selection.Text = lIneNum
     24 
     25         Selection.Font.Bold = False
     26 
     27         Selection.Font.Color = wdColorAutomatic
     28 
     29         p = Selection.MoveDown(wdLine, 1, wdMove)
     30 
     31         Selection.StartOf wdLine
     32 
     33     Next
     34 
     35 End Sub
     36 ' 处理集合
     37 Private Function isSpecial(ByVal w As String, ByRef col As Collection) As Boolean
     38 
     39     For Each i In col
     40 
     41         If w = i Then
     42 
     43             isSpecial = True
     44 
     45             Exit Function
     46 
     47         End If
     48 
     49     Next
     50 
     51     isspeical = False
     52 
     53 End Function
     54 '其它符号
     55 Private Function isOthers(ByVal w As String) As Boolean
     56 
     57     Dim others As New Collection
     58 
     59     With others
     60 
     61         .Add "--": .Add "error": .Add "$": .Add """": .Add "{": .Add "}": .Add "[": .Add "]": .Add "root": .Add "@": .Add "(": .Add ")": .Add "()"
     62         
     63 
     64     End With
     65 
     66     isOthers = isSpecial(w, others)
     67 
     68 End Function
     69 '常见的操作运算符
     70 Private Function isOperator(w) As Boolean
     71 
     72     Dim ops As New Collection
     73 
     74     With ops
     75 
     76         .Add "+": .Add "-": .Add "*": .Add "/": .Add "&": .Add "^": .Add ";"
     77 
     78         .Add "%": .Add "!": .Add ":": .Add ",": .Add "."
     79 
     80         .Add "||": .Add "&&": .Add "|": .Add "=": .Add "++": .Add "--"
     81 
     82         .Add "'": .Add """": .Add "===": .Add "==": .Add "**": .Add "+=": .Add "-=": .Add "*=": .Add "/=": .Add "%="
     83         
     84 
     85     End With
     86 
     87     isOperator = isSpecial(w, ops)
     88 
     89 End Function
     90 
     91 'C语言关键字
     92 Private Function isCLANGKeyword(w) As Boolean
     93 
     94     Dim keys As New Collection
     95 
     96     With keys
     97 
     98         .Add "if": .Add "else": .Add "elseif": .Add "case": .Add "switch": .Add "break"
     99 
    100         .Add "for": .Add "continue": .Add "do": .Add "while": .Add "foreach": .Add "echo"
    101 
    102         .Add "define": .Add "array": .Add "NULL": .Add "function": .Add "include": .Add "return"
    103 
    104         .Add "global": .Add "as": .Add "die": .Add "header": .Add "this": .Add "empty"
    105 
    106         .Add "isset": .Add "mysql_fetch_assoc": .Add "class": .Add "style"
    107 
    108         .Add "name": .Add "value": .Add "type": .Add "width": .Add "_POST": .Add "_GET"
    109 
    110     End With
    111 
    112     isCLANGKeyword = isSpecial(w, keys)
    113 
    114 End Function
    115 'MySQL关键字
    116 Private Function isMySQLKeyword(w) As Boolean
    117 
    118     Dim keys As New Collection
    119 
    120     With keys
    121         .Add "ADD": .Add "ALL": .Add "ALTER": .Add "ANALYZE": .Add "AND": .Add "AS": .Add "ASC": .Add "ASENSITIVE": .Add "BEFORE": .Add "BETWEEN"
    122         .Add "BIGINT": .Add "BINARY": .Add "BLOB": .Add "BOTH": .Add "BY": .Add "CALL": .Add "CASCADE": .Add "CASE": .Add "CHANGE"
    123         .Add "CHAR": .Add "CHARACTER": .Add "CHECK": .Add "COLLATE": .Add "COLUMN": .Add "CONDITION": .Add "CONNECTION"
    124         .Add "CONSTRAINT": .Add "CONTINUE": .Add "CONVERT": .Add "CREATE": .Add "CROSS": .Add "CURRENT_DATE": .Add "CURRENT_TIME"
    125         .Add "CURRENT_TIMESTAMP": .Add "CURRENT_USER": .Add "CURSOR": .Add "DATABASE": .Add "DATABASES": .Add "DAY_HOUR"
    126         .Add "DAY_MICROSECOND": .Add "DAY_MINUTE": .Add "DAY_SECOND": .Add "DEC": .Add "DECIMAL": .Add "DECLARE": .Add "DEFAULT"
    127         .Add "DELAYED": .Add "DELETE": .Add "DESC": .Add "DESCRIBE": .Add "DETERMINISTIC": .Add "DISTINCT": .Add "DISTINCTROW"
    128         .Add "DIV": .Add "DOUBLE": .Add "DROP": .Add "DUAL": .Add "EACH": .Add "ELSE": .Add "ELSEIF": .Add "ENCLOSED": .Add "ESCAPED"
    129         .Add "EXISTS": .Add "EXIT": .Add "EXPLAIN": .Add "FALSE": .Add "FETCH": .Add "FLOAT": .Add "FLOAT4": .Add "FLOAT8": .Add "FOR"
    130         .Add "FORCE": .Add "FOREIGN": .Add "FROM": .Add "FULLTEXT": .Add "GOTO": .Add "GRANT": .Add "GROUP": .Add "HAVING"
    131         .Add "HIGH_PRIORITY": .Add "HOUR_MICROSECOND": .Add "HOUR_MINUTE": .Add "HOUR_SECOND": .Add "IF": .Add "IGNORE"
    132         .Add "IN": .Add "INDEX": .Add "INFILE": .Add "INNER": .Add "INOUT": .Add "INSENSITIVE": .Add "INSERT": .Add "INT": .Add "INT1"
    133         .Add "INT2": .Add "INT3": .Add "INT4": .Add "INT8": .Add "INTEGER": .Add "INTERVAL": .Add "INTO""": .Add "IS": .Add "ITERATE"
    134         .Add "JOIN": .Add "KEY": .Add "KEYS": .Add "KILL": .Add "LABEL": .Add "LEADING": .Add "LEAVE": .Add "LEFT": .Add "LIKE"
    135         .Add "LIMIT": .Add "LINEAR": .Add "LINES": .Add "LOAD": .Add "LOCALTIME": .Add "LOCALTIMESTAMP": .Add "LOCK": .Add "LONG"
    136         .Add "LONGBLOB": .Add "LONGTEXT": .Add "LOOP": .Add "LOW_PRIORITY": .Add "MATCH": .Add "MEDIUMBLOB": .Add "MEDIUMINT"
    137         .Add "MEDIUMTEXT": .Add "MIDDLEINT": .Add "MINUTE_MICROSECOND": .Add "MINUTE_SECOND": .Add "MOD": .Add "MODIFIES"
    138         .Add "NATURAL": .Add "NOT": .Add "NO_WRITE_TO_BINLOG": .Add "NULL": .Add "NUMERIC": .Add "ON": .Add "OPTIMIZE"
    139         .Add "OPTION": .Add "OPTIONALLY": .Add "OR": .Add "ORDER": .Add "OUT": .Add "OUTER": .Add "OUTFILE": .Add "PRECISION"
    140         .Add "PRIMARY": .Add "PROCEDURE": .Add "PURGE": .Add "RAID0": .Add "RANGE": .Add "READ": .Add "READS": .Add "REAL"
    141         .Add "REFERENCES": .Add "REGEXP": .Add "RELEASE": .Add "RENAME": .Add "REPEAT": .Add "REPLACE": .Add "REQUIRE"
    142         .Add "RESTRICT": .Add "RETURN": .Add "REVOKE": .Add "RIGHT": .Add "RLIKE": .Add "SCHEMA": .Add "SCHEMAS"
    143         .Add "SECOND_MICROSECOND": .Add "SELECT": .Add "SENSITIVE": .Add "SEPARATOR": .Add "SET": .Add "SHOW": .Add "SMALLINT"
    144         .Add "SPATIAL": .Add "SPECIFIC": .Add "SQL": .Add "SQLEXCEPTION": .Add "SQLSTATE": .Add "SQLWARNING": .Add "SQL_BIG_RESULT"
    145         .Add "SQL_CALC_FOUND_ROWS": .Add "SQL_SMALL_RESULT": .Add "SSL": .Add "STARTING": .Add "STRAIGHT_JOIN": .Add "TABLE"
    146         .Add "TERMINATED": .Add "THEN": .Add "TINYBLOB": .Add "TINYINT": .Add "TINYTEXT": .Add "TO": .Add "TRAILING": .Add "TRIGGER"
    147         .Add "TRUE": .Add "UNDO": .Add "UNION": .Add "UNIQUE": .Add "UNLOCK": .Add "UNSIGNED": .Add "UPDATE": .Add "USAGE": .Add "USE"
    148         .Add "USING": .Add "UTC_DATE": .Add "UTC_TIME": .Add "UTC_TIMESTAMP": .Add "VALUES": .Add "VARBINARY": .Add "VARCHAR"
    149         .Add "VARCHARACTER": .Add "VARYING": .Add "WHEN": .Add "WHERE": .Add "WHILE": .Add "WITH": .Add "WRITE": .Add "X509"
    150         .Add "XOR": .Add "YEAR_MONTH": .Add "add": .Add "all": .Add "alter": .Add "analyze": .Add "and": .Add "as": .Add "asc"
    151         .Add "asensitive": .Add "before": .Add "between": .Add "bigint": .Add "binary": .Add "blob": .Add "both": .Add "by"
    152         .Add "call": .Add "cascade": .Add "case": .Add "change": .Add "char": .Add "character": .Add "check": .Add "collate"
    153         .Add "column": .Add "condition": .Add "connection": .Add "constraint": .Add "continue": .Add "convert": .Add "create"
    154         .Add "cross": .Add "current_date": .Add "current_time": .Add "current_timestamp": .Add "current_user": .Add "cursor"
    155         .Add "database": .Add "databases": .Add "day_hour": .Add "day_microsecond": .Add "day_minute": .Add "day_second"
    156         .Add "dec": .Add "decimal": .Add "declare": .Add "default": .Add "delayed": .Add "delete": .Add "desc": .Add "describe"
    157         .Add "deterministic": .Add "distinct": .Add "distinctrow": .Add "div": .Add "double": .Add "drop": .Add "dual": .Add "each"
    158         .Add "else": .Add "elseif": .Add "enclosed": .Add "escaped": .Add "exists": .Add "exit": .Add "explain": .Add "false"
    159         .Add "fetch": .Add "float": .Add "float4": .Add "float8": .Add "for": .Add "force": .Add "foreign": .Add "from"
    160         .Add "fulltext": .Add "goto": .Add "grant": .Add "group": .Add "having": .Add "high_priority": .Add "hour_microsecond"
    161         .Add "hour_minute": .Add "hour_second": .Add "if": .Add "ignore": .Add "in": .Add "index": .Add "infile": .Add "inner"
    162         .Add "inout": .Add "insensitive": .Add "insert": .Add "int": .Add "int1": .Add "int2": .Add "int3": .Add "int4": .Add "int8"
    163         .Add "integer": .Add "interval": .Add "into""": .Add "is": .Add "iterate": .Add "join": .Add "key": .Add "keys": .Add "kill"
    164         .Add "label": .Add "leading": .Add "leave": .Add "left": .Add "like": .Add "limit": .Add "linear": .Add "lines": .Add "load"
    165         .Add "localtime": .Add "localtimestamp": .Add "lock": .Add "long": .Add "longblob": .Add "longtext": .Add "loop"
    166         .Add "low_priority": .Add "match": .Add "mediumblob": .Add "mediumint": .Add "mediumtext": .Add "middleint"
    167         .Add "minute_microsecond": .Add "minute_second": .Add "mod": .Add "modifies": .Add "natural": .Add "not"
    168         .Add "no_write_to_binlog": .Add "null": .Add "numeric": .Add "on": .Add "optimize": .Add "option": .Add "optionally"
    169         .Add "or": .Add "order": .Add "out": .Add "outer": .Add "outfile": .Add "precision": .Add "primary": .Add "procedure"
    170         .Add "purge": .Add "raid0": .Add "range": .Add "read": .Add "reads": .Add "real": .Add "references": .Add "regexp"
    171         .Add "release": .Add "rename": .Add "repeat": .Add "replace": .Add "require": .Add "restrict": .Add "return"
    172         .Add "revoke": .Add "right": .Add "rlike": .Add "schema": .Add "schemas": .Add "second_microsecond": .Add "select"
    173         .Add "sensitive": .Add "separator": .Add "set": .Add "show": .Add "smallint": .Add "spatial": .Add "specific": .Add "sql"
    174         .Add "sqlexception": .Add "sqlstate": .Add "sqlwarning": .Add "sql_big_result": .Add "sql_calc_found_rows"
    175         .Add "sql_small_result": .Add "ssl": .Add "starting": .Add "straight_join": .Add "table": .Add "terminated"
    176         .Add "then": .Add "tinyblob": .Add "tinyint": .Add "tinytext": .Add "to": .Add "trailing": .Add "trigger": .Add "true"
    177         .Add "undo": .Add "union": .Add "unique": .Add "unlock": .Add "unsigned": .Add "update": .Add "usage": .Add "use"
    178         .Add "using": .Add "utc_date": .Add "utc_time": .Add "utc_timestamp": .Add "values": .Add "varbinary": .Add "varchar"
    179         .Add "varcharacter": .Add "varying": .Add "when": .Add "where": .Add "while": .Add "with": .Add "write": .Add "x509"
    180         .Add "xor": .Add "year_month"
    181     End With
    182 
    183     isMySQLKeyword = isSpecial(w, keys)
    184 
    185 End Function
    186 
    187 'Python语言的关键字
    188 Private Function isPythonLANGKeyword(w) As Boolean
    189 
    190     Dim keys As New Collection
    191 
    192     With keys
    193         .Add "False": .Add "def": .Add "if": .Add "raise": .Add "None": .Add "del": .Add "import": .Add "return": .Add "True": .Add "elif": .Add "in"
    194         .Add "try": .Add "and": .Add "else": .Add "is": .Add "while": .Add "as": .Add "except": .Add "lambda": .Add "with": .Add "assert": .Add "finally"
    195         .Add "nonlocal": .Add "yield": .Add "break": .Add "for": .Add "not": .Add "class": .Add "from": .Add "or": .Add "continue": .Add "global": .Add "pass": .Add "self"
    196 
    197     End With
    198 
    199     isPythonLANGKeyword = isSpecial(w, keys)
    200 
    201 End Function
    202 
    203 'Java语言关键字
    204 Private Function isJavaLANGKeyword(w) As Boolean
    205 
    206     Dim keys As New Collection
    207 
    208     With keys
    209         .Add "abstract": .Add "asm": .Add "auto": .Add "bool": .Add "boolean": .Add "break": .Add "byte": .Add "case": .Add "cast": .Add "catch": .Add "char"
    210         .Add "class": .Add "const": .Add "continue": .Add "default": .Add "delete": .Add "do": .Add "double": .Add "dynamic_case": .Add "else": .Add "enum": .Add "explicit": .Add "export": .Add "extern": .Add "extends": .Add "false": .Add "final"
    211         .Add "finally": .Add "friend": .Add "float": .Add "for": .Add "goto": .Add "if": .Add "inline": .Add "implements": .Add "import": .Add "instanceof": .Add "inner": .Add "int"
    212         .Add "interface": .Add "long": .Add "native": .Add "new": .Add "null": .Add "operator": .Add "package": .Add "private": .Add "protected": .Add "public": .Add "return"
    213         .Add "short": .Add "sigend": .Add "static": .Add "static_cast": .Add "struct": .Add "super": .Add "switch": .Add "synchronized": .Add "template": .Add "this": .Add "throw": .Add "throws": .Add "transient": .Add "true"
    214         .Add "try": .Add "typedef": .Add "unsigned": .Add "union": .Add "using": .Add "virtual": .Add "void": .Add "volatile": .Add "while": .Add "include": .Add "std"
    215     End With
    216 
    217     isJavaLANGKeyword = isSpecial(w, keys)
    218 
    219 End Function
    220 'Java语言系统相关的关键字
    221 Private Function isJavaSystemLANGKeyword(w) As Boolean
    222 
    223     Dim keys As New Collection
    224 
    225     With keys
    226     
    227        .Add "System": .Add "String": .Add "StringBuffer": .Add "Runnable": .Add "Thread": .Add "Exception": .Add "IOException": .Add "cout": .Add "cin": .Add "std": .Add "endl": .Add "vector"
    228     
    229     End With
    230 
    231     isJavaSystemLANGKeyword = isSpecial(w, keys)
    232 
    233 End Function
    234 
    235 'RHEL系列的系统常用命令
    236 Private Function isRHELLANGKeyword(w) As Boolean
    237 
    238     Dim keys As New Collection
    239 
    240     With keys
    241         .Add "cat": .Add "chattr": .Add "chgrp": .Add "chmod": .Add "chown": .Add "cksum": .Add "cmp": .Add "diff": .Add "diffstat"
    242         .Add "file": .Add "find": .Add "git": .Add "gitview": .Add "indent": .Add "cut": .Add "ln": .Add "less": .Add "locate"
    243         .Add "lsattr": .Add "mattrib": .Add "mc": .Add "mdel": .Add "mdir": .Add "mktemp": .Add "more": .Add "mmove": .Add "mread"
    244         .Add "mren": .Add "mtools": .Add "mtoolstest": .Add "mv": .Add "od": .Add "paste": .Add "patch": .Add "rcp": .Add "rm": .Add "slocate"
    245         .Add "split": .Add "tee": .Add "tmpwatch": .Add "touch": .Add "umask": .Add "which": .Add "cp": .Add "whereis": .Add "mcopy"
    246         .Add "mshowfat": .Add "rhmask": .Add "scp ": .Add "awk": .Add "read": .Add "updatedb": .Add "col": .Add "colrm": .Add "comm"
    247         .Add "csplit": .Add "ed": .Add "egrep": .Add "ex": .Add "fgrep": .Add "fmt": .Add "fold": .Add "grep": .Add "ispell": .Add "jed"
    248         .Add "joe": .Add "join": .Add "look": .Add "mtype": .Add "pico": .Add "rgrep": .Add "sed": .Add "sort": .Add "spell": .Add "tr"
    249         .Add "expr": .Add "uniq": .Add "wc": .Add "let": .Add " ": .Add "lprm": .Add "lpr": .Add "lpq": .Add "lpd": .Add "bye": .Add "ftp"
    250         .Add "uuto": .Add "uupick": .Add "uucp": .Add "uucico": .Add "tftp": .Add "ncftp": .Add "ftpshut": .Add "ftpwho": .Add "ftpcount"
    251         .Add "cd": .Add "df": .Add "dirs": .Add "du": .Add "edquota": .Add "eject": .Add "mcd": .Add "mdeltree": .Add "mdu": .Add "mkdir"
    252         .Add "mlabel": .Add "mmd": .Add "mrd": .Add "mzip": .Add "pwd": .Add "quota": .Add "mount": .Add "mmount": .Add "rmdir": .Add "rmt"
    253         .Add "stat": .Add "tree": .Add "umount": .Add "ls": .Add "quotacheck": .Add "quotaoff": .Add "lndir": .Add "repquota"
    254         .Add "quotaon": .Add "badblocks": .Add "cfdisk": .Add "dd": .Add "e2fsck": .Add "ext2ed": .Add "fsck": .Add "fsck.minix"
    255         .Add "fsconf": .Add "fdformat": .Add "hdparm": .Add "mformat": .Add "mkbootdisk": .Add "mkdosfs": .Add "mke2fs": .Add "mkfs.ext2"
    256         .Add "mkfs.msdos": .Add "mkinitrd": .Add "mkisofs": .Add "mkswap": .Add "mpartition": .Add "swapon": .Add "symlinks": .Add "sync"
    257         .Add "mbadblocks": .Add "mkfs.minix": .Add "fsck.ext2": .Add "fdisk": .Add "losetup": .Add "mkfs": .Add "sfdisk": .Add "swapoff"
    258         .Add "apachectl": .Add "arpwatch": .Add "dip": .Add "getty": .Add "mingetty": .Add "uux": .Add "telnet": .Add "uulog": .Add "uustat"
    259         .Add "ppp-off": .Add "netconfig": .Add "nc": .Add "httpd": .Add "ifconfig": .Add "minicom": .Add "mesg": .Add "dnsconf": .Add "wall"
    260         .Add "netstat": .Add "ping": .Add "pppstats": .Add "samba": .Add "setserial": .Add "talk": .Add "traceroute": .Add "tty"
    261         .Add "newaliases": .Add "uuname": .Add "netconf": .Add "write": .Add "statserial": .Add "efax": .Add "pppsetup": .Add "tcpdump"
    262         .Add "ytalk": .Add "cu": .Add "smbd": .Add "testparm": .Add "smbclient": .Add "shapecfg": .Add "adduser": .Add "chfn": .Add "useradd"
    263         .Add "date": .Add "exit": .Add "finger": .Add "fwhios": .Add "sleep": .Add "suspend": .Add "groupdel": .Add "groupmod": .Add "halt"
    264         .Add "kill": .Add "last": .Add "lastb": .Add "login": .Add "logname": .Add "logout": .Add "ps": .Add "nice": .Add "procinfo"
    265         .Add "top": .Add "pstree": .Add "reboot": .Add "rlogin": .Add "rsh": .Add "sliplogin": .Add "screen": .Add "shutdown": .Add "rwho"
    266         .Add "sudo": .Add "gitps": .Add "swatch": .Add "tload": .Add "logrotate": .Add "uname": .Add "chsh": .Add "userconf": .Add "userdel"
    267         .Add "usermod": .Add "vlock": .Add "who": .Add "whoami": .Add "whois": .Add "newgrp": .Add "renice": .Add "su": .Add "skill": .Add "w"
    268         .Add "id": .Add "free": .Add "reset": .Add "clear": .Add "alias": .Add "dircolors": .Add "aumix": .Add "bind": .Add "chroot"
    269         .Add "clock": .Add "crontab": .Add "declare": .Add "depmod": .Add "dmesg": .Add "enable": .Add "eval": .Add "export"
    270         .Add "pwunconv": .Add "grpconv": .Add "rpm": .Add "insmod": .Add "kbdconfig": .Add "lilo": .Add "liloconfig": .Add "lsmod"
    271         .Add "minfo": .Add "set": .Add "modprobe": .Add "ntsysv": .Add "mouseconfig": .Add "passwd": .Add "pwconv": .Add "rdate"
    272         .Add "resize": .Add "rmmod": .Add "grpunconv": .Add "modinfo": .Add "time": .Add "setup": .Add "sndconfig": .Add "setenv"
    273         .Add "setconsole": .Add "timeconfig": .Add "ulimit": .Add "unset": .Add "chkconfig": .Add "apmd": .Add "hwclock"
    274         .Add "mkkickstart": .Add "fbset": .Add "unalias": .Add "SVGATextMode": .Add "ar": .Add "bunzip2": .Add "bzip2": .Add "yum"
    275         .Add "bzip2recover": .Add "gunzip": .Add "unarj": .Add "compress": .Add "cpio": .Add "dump": .Add "uuencode": .Add "gzexe"
    276         .Add "gzip": .Add "lha": .Add "restore": .Add "tar": .Add "uudecode": .Add "unzip": .Add "zip": .Add "zipinfo": .Add "setleds": .Add "echo"
    277         .Add "loadkeys": .Add "rdev": .Add "dumpkeys"
    278     End With
    279 
    280     isRHELLANGKeyword = isSpecial(w, keys)
    281 
    282 End Function
    283 
    284 'RHEL syntax hight light
    285 Sub RHELForSyntaxHighlight()
    286 
    287     Dim wordCount As Integer
    288 
    289     Dim d As Integer
    290 
    291     ' set the style of selection
    292 
    293     ' Selection.Style = "ccode"
    294 
    295     d = 0
    296 
    297     wordCount = Selection.Words.Count
    298 
    299     Selection.StartOf wdWord
    300 
    301     While d < wordCount
    302 
    303         d = d + Selection.MoveRight(wdWord, 1, wdExtend)
    304 
    305         w = Selection.Text
    306         If isRHELLANGKeyword(Trim(w)) = True Then
    307 
    308             Selection.Font.Color = wdColorBlue
    309 
    310             Selection.Font.Bold = True
    311             
    312         End If
    313             
    314         If isRHELLANGKeyword(Trim(w)) = True Then
    315 
    316             Selection.Font.Color = wdColorBlue
    317 
    318             Selection.Font.Bold = True
    319             
    320             
    321         ElseIf isOperator(Trim(w)) = True Then
    322             Selection.Font.Bold = True
    323 
    324             Selection.Font.Color = wdColorBrown
    325             
    326             
    327         ElseIf isOthers(Trim(w)) = True Then
    328 
    329             Selection.Font.Color = wdColorBrown
    330 
    331             Selection.Font.Bold = True
    332             
    333         Else
    334             
    335             Selection.Font.Bold = True
    336         End If
    337 
    338         'move the start of selection to next word
    339 
    340         Selection.MoveStart wdWord
    341 
    342     Wend
    343 
    344     ' prepare For set lIne number
    345 
    346     'Selection.MoveLeft wdWord, wordCount, wdExtend
    347 
    348     'SetLIneNumber
    349 
    350 End Sub
    351 ' java syntax hight light
    352 Sub JavaLANGSyntaxHighlight()
    353 
    354     Dim wordCount As Integer
    355 
    356     Dim d As Integer
    357 
    358     ' set the style of selection
    359 
    360     ' Selection.Style = "ccode"
    361 
    362     d = 0
    363 
    364     wordCount = Selection.Words.Count
    365 
    366     Selection.StartOf wdWord
    367 
    368     While d < wordCount
    369 
    370         d = d + Selection.MoveRight(wdWord, 1, wdExtend)
    371 
    372         w = Selection.Text
    373         If isJavaLANGKeyword(Trim(w)) = True Then
    374 
    375             Selection.Font.Color = wdColorRed
    376 
    377             Selection.Font.Bold = True
    378             
    379         ElseIf isJavaSystemLANGKeyword(Trim(w)) = True Then
    380 
    381             Selection.Font.Color = wdColorRed
    382 
    383             Selection.Font.Bold = True
    384             
    385             
    386         ElseIf isOperator(Trim(w)) = True Then
    387 
    388             Selection.Font.Color = wdColorBrown
    389             
    390             Selection.Font.Bold = True
    391             
    392         ElseIf isOthers(Trim(w)) = True Then
    393 
    394             Selection.Font.Color = wdColorBrown
    395 
    396             Selection.Font.Bold = True
    397 
    398 
    399         ElseIf Trim(w) = "//" Then
    400 
    401             'lIne comment
    402 
    403             Selection.MoveEnd wdLine, 1
    404 
    405             commentWords = Selection.Words.Count
    406 
    407             d = d + commentWords
    408 
    409             Selection.Font.Color = wdColorBlack
    410 
    411             Selection.MoveStart wdWord, commentWords
    412 
    413          ElseIf Trim(w) = "/*" Then
    414 
    415             'block comment
    416 
    417             While Selection.Characters.Last <> "/"
    418 
    419                 Selection.MoveLeft wdCharacter, 1, wdExtend
    420 
    421                 Selection.MoveEndUntil ("*")
    422 
    423                 Selection.MoveRight wdCharacter, 2, wdExtend
    424 
    425             Wend
    426 
    427             commentWords = Selection.Words.Count
    428 
    429             d = d + commentWords
    430 
    431             Selection.Font.Color = wdColorBlack
    432             
    433             Selection.MoveStart wdWord, commentWords
    434             
    435             Selection.Font.Bold = True
    436         Else
    437             
    438             Selection.Font.Bold = True
    439 
    440         End If
    441 
    442         'move the start of selection to next word
    443 
    444         Selection.MoveStart wdWord
    445 
    446     Wend
    447 
    448     ' prepare For set lIne number
    449 
    450     Selection.MoveLeft wdWord, wordCount, wdExtend
    451 
    452     SetLIneNumber
    453 
    454 End Sub
    455 ' python syntax high light
    456 Sub PythonLANGSyntaxHighlight()
    457 
    458     Dim wordCount As Integer
    459 
    460     Dim d As Integer
    461 
    462     ' set the style of selection
    463 
    464     ' Selection.Style = "ccode"
    465 
    466     d = 0
    467 
    468     wordCount = Selection.Words.Count
    469 
    470     Selection.StartOf wdWord
    471 
    472     While d < wordCount
    473 
    474         d = d + Selection.MoveRight(wdWord, 1, wdExtend)
    475 
    476         w = Selection.Text
    477         If isPythonLANGKeyword(Trim(w)) = True Then
    478 
    479             Selection.Font.Color = wdColorViolet
    480 
    481             Selection.Font.Bold = True
    482             
    483         ElseIf isOperator(Trim(w)) = True Then
    484 
    485             Selection.Font.Color = wdColorBrown
    486             
    487             Selection.Font.Bold = True
    488             
    489         ElseIf isOthers(Trim(w)) = True Then
    490 
    491             Selection.Font.Color = wdColorBrown
    492 
    493             Selection.Font.Bold = True
    494 
    495         Else
    496             
    497             Selection.Font.Bold = True
    498         End If
    499 
    500         'move the start of selection to next word
    501 
    502         Selection.MoveStart wdWord
    503 
    504     Wend
    505 
    506     ' prepare For set lIne number
    507 
    508     Selection.MoveLeft wdWord, wordCount, wdExtend
    509 
    510     SetLIneNumber
    511 
    512 End Sub
    513 'C syntax hight light
    514 Sub CLANGSyntaxHighlight()
    515 
    516     Dim wordCount As Integer
    517 
    518     Dim d As Integer
    519 
    520     ' set the style of selection
    521 
    522     ' Selection.Style = "ccode"
    523 
    524     d = 0
    525 
    526     wordCount = Selection.Words.Count
    527 
    528     Selection.StartOf wdWord
    529 
    530     While d < wordCount
    531 
    532         d = d + Selection.MoveRight(wdWord, 1, wdExtend)
    533 
    534         w = Selection.Text
    535         If isCLANGKeyword(Trim(w)) = True Then
    536 
    537             Selection.Font.Color = wdColorBlue
    538             
    539             Selection.Font.Bold = True
    540             
    541             
    542         ElseIf isOperator(Trim(w)) = True Then
    543         
    544             Selection.Font.Bold = True
    545 
    546             Selection.Font.Color = wdColorBrown
    547             
    548             
    549         ElseIf isOthers(Trim(w)) = True Then
    550 
    551             Selection.Font.Color = wdColorBrown
    552 
    553             Selection.Font.Bold = True
    554 
    555 
    556         ElseIf Trim(w) = "//" Then
    557 
    558             'lIne comment
    559 
    560             Selection.MoveEnd wdLine, 1
    561 
    562             commentWords = Selection.Words.Count
    563 
    564             d = d + commentWords
    565 
    566             Selection.Font.Color = wdColorBlack
    567 
    568             Selection.MoveStart wdWord, commentWords
    569 
    570          ElseIf Trim(w) = "/*" Then
    571 
    572             'block comment
    573 
    574             While Selection.Characters.Last <> "/"
    575 
    576                 Selection.MoveLeft wdCharacter, 1, wdExtend
    577 
    578                 Selection.MoveEndUntil ("*")
    579 
    580                 Selection.MoveRight wdCharacter, 2, wdExtend
    581 
    582             Wend
    583 
    584             commentWords = Selection.Words.Count
    585 
    586             d = d + commentWords
    587 
    588             Selection.Font.Color = wdColorBlack
    589             
    590             Selection.MoveStart wdWord, commentWords
    591             
    592         Else
    593             
    594             Selection.Font.Bold = True
    595         End If
    596 
    597         'move the start of selection to next word
    598 
    599         Selection.MoveStart wdWord
    600 
    601     Wend
    602 
    603     ' prepare For set lIne number
    604 
    605     Selection.MoveLeft wdWord, wordCount, wdExtend
    606 
    607     SetLIneNumber
    608 
    609 End Sub
    610 
    611 ' MySQL syntax hight light
    612 Sub MySQLForSyntaxHighlight()
    613 
    614     Dim wordCount As Integer
    615 
    616     Dim d As Integer
    617 
    618     ' set the style of selection
    619 
    620     ' Selection.Style = "ccode"
    621 
    622     d = 0
    623 
    624     wordCount = Selection.Words.Count
    625 
    626     Selection.StartOf wdWord
    627 
    628     While d < wordCount
    629 
    630         d = d + Selection.MoveRight(wdWord, 1, wdExtend)
    631 
    632         w = Selection.Text
    633 
    634         If isMySQLKeyword(Trim(w)) = True Then
    635 
    636             Selection.Font.Color = wdColorRed
    637 
    638             Selection.Font.Bold = True
    639                
    640         ElseIf isOperator(Trim(w)) = True Then
    641         
    642             Selection.Font.Bold = True
    643 
    644             Selection.Font.Color = wdColorBrown
    645             
    646             
    647         ElseIf isOthers(Trim(w)) = True Then
    648 
    649             Selection.Font.Color = wdColorBrown
    650 
    651             Selection.Font.Bold = True
    652 
    653 
    654         ElseIf Trim(w) = "#" Then
    655 
    656             'lIne comment
    657 
    658             Selection.MoveEnd wdLine, 1
    659 
    660             commentWords = Selection.Words.Count
    661 
    662             d = d + commentWords
    663 
    664             Selection.Font.Color = wdColorBlack
    665 
    666             Selection.MoveStart wdWord, commentWords
    667             
    668         Else
    669             
    670             Selection.Font.Bold = True
    671         End If
    672 
    673         'move the start of selection to next word
    674 
    675         Selection.MoveStart wdWord
    676 
    677     Wend
    678 
    679     ' prepare For set lIne number
    680 
    681     ' Selection.MoveLeft wdWord, wordCount, wdExtend
    682 
    683     ' SetLIneNumber
    684 
    685 End Sub

    以下是来自互联网的源代码,原作者不是太清楚,这里附上链接 https://www.xuebuyuan.com/1843358.html

    此处再次感谢提供基础源码的作者。

      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
  • 相关阅读:
    JQuery上传插件Uploadify使用详解
    在ASP.NET MVC中使用带后缀的URL
    设计师必备的职业素养!
    2010年最危险的IT技术是什么?
    关于百度快照的常见问题!
    设计师提高水平秘籍
    成为优秀设计师的几大条件
    2010最值得关注的10款互联网产品
    2011年网页设计趋势!!!!
    揭开网站美丽面纱!快照(百度快照,谷歌快照)。
  • 原文地址:https://www.cnblogs.com/meizy/p/word_code_syntax_high_light.html
Copyright © 2011-2022 走看看