在平常我们粘贴代码到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

Word中的代码怎样语法高亮的更多相关文章

  1. LaTeX中Python代码的语法高亮

    LaTeX中Python代码的语法高亮 本文中,"{}"中的字母为LaTeX或Python的包名,只有"Pygments"是Python的包,其他都是LaTeX ...

  2. 用 highlight.js 为文章中的代码添加语法高亮

    来源:http://www.ghostchina.com/adding-syntax-highlighting-to-ghost-using-highlight-js/ --------------- ...

  3. 在 Microsoft Word 文档 中粘贴代码实现语法高亮的方法

    1.下载notepad++. 2.将代码粘贴进notepad++,或者直接用notepad++打开. 3.点击顶栏 ===> 插件 ===> NppExport ===> cope ...

  4. 在word中使用notepad++实现代码的语法高亮

    转载自:http://blog.csdn.net/woohello/article/details/7621651 有时写文档时需要将代码粘贴到word中,但直接粘贴到word中的代码虽能保持换行与缩 ...

  5. 在word中使用notepad++实现代码的语法高亮 分类: C_OHTERS 2013-09-22 10:38 2273人阅读 评论(0) 收藏

    转载自:http://blog.csdn.net/woohello/article/details/7621651 有时写文档时需要将代码粘贴到word中,但直接粘贴到word中的代码虽能保持换行与缩 ...

  6. Word中使用代码高亮插件

    Word中使用代码高亮插件 1.下载并安装:SyntaxHighlighter4Word.zip 解压,然后双击bin\word2010\Kong.SyntaxHighlighter.Word2010 ...

  7. (转)如何优雅的在 Microsoft word中插入代码

    背景:最近项目需要自己编写文档,在文档中需要插入部分代码,记录下这个方法. 一.工具 方法1.打开这个网页PlanetB; 方法2.或者谷歌搜索syntax highlight code in wor ...

  8. 如何在 Microsoft word中插入代码

    一.工具 方法1.打开这个网页PlanetB; 方法2.或者谷歌搜索syntax highlight code in word documents,检索结果的第一个.如下图: PS. 方法1和2打开的 ...

  9. 怎样在Word中插入代码并保持代码原始样式不变

    怎样在Word中插入代码并保持样式不变 我们有时候需要在word中添加一段我们写的代码,但是把代码粘贴到word文档中之后就发现所有的代码的样子都变了,我们可以采用下边的方法来实现保持代码原来的样式和 ...

随机推荐

  1. ES6函数参数

    之前在看Vue2.0的时候,就被很多的箭头函数困扰,一直不知道是怎么回事,虽然箭头函数四个字在我耳边一直转圈,今天小编整理整理箭头函数里面的常见用法和表现形式,在这个Vue3.0已经到来的一段时间,希 ...

  2. CENTOS7 安装 SYNCTHING

    本地电脑需要同步远程数据,安装syncthing 测试 1:下载 wget https://github.com/syncthing/syncthing/releases/download/v1.5. ...

  3. 面试热点|理解TCP/IP传输层拥塞控制算法

    0x00.前言 通过本文你将了解到以下内容: 拥塞控制概念以及其背景 流量控制和拥塞控制的区别与联系 拥塞控制主要过程详解 伙伴们认真学习一下,让offer来得更猛烈些吧! 0x01.TCP/IP协议 ...

  4. 【题解】Luogu p2964 BZOJ 2017[Usaco2009 Nov]硬币游戏

    题目描述 Farmer John's cows like to play coin games so FJ has invented with a new two-player coin game c ...

  5. NOIP模拟测试38「金·斯诺·赤」

    金 辗转相减见祖宗 高精 #include<bits/stdc++.h> using namespace std; #define A 2000 #define P 1 #define N ...

  6. 乘风破浪,Windows11设计和开发指导,全新图标字体和云母材质

    Windows11全新的布局设计 Windows 11全新的布局设计已设计为支持现代应用体验.渐进的圆角.嵌套元素和一致的排水沟相结合,营造出柔和.平静.平易近人的效果,强调目的的统一和易用性. ht ...

  7. 堆和栈的内存分布&一些关于内存泄露、栈溢出和野指针的内容(头秃

    内存泄漏&栈溢出 C++中,我们主要涉及的内存是栈和堆, 堆  (By programmer) 申请后由程序员主动释放,遗忘后果严重: 栈 (By compiler)需要时由编译器分配,在不需 ...

  8. MyBatis温故而知新-底层运行原理

    准备工作 public class MainClass { public static void main(String[] args) throws Exception { String resou ...

  9. Ant Design Blazor 组件库的路由复用多标签页介绍

    最近,在 Ant Design Blazor 组件库中实现多标签页组件的呼声日益高涨.于是,我利用周末时间,结合 Blazor 内置路由组件实现了基于 Tabs 组件的 ReuseTabs 组件. 前 ...

  10. AD设计中地铜突然消失且无法选中删除的解决办法

    作者:struct_mooc 博客地址: https://www.cnblogs.com/structmooc/p/14984466.html   前几天在设计一块电路板的时候,已经全部设计完了!但是 ...