有时写文档时需要将代码粘贴到word中,但直接粘贴到word中的代码虽能保持换行与缩进等格式,但在一般代码编辑工具中的关键字高亮功能却无法实现。该方法无需任何插件,只需要制作一个宏即可实现类似sublime的显示效果
1、首先完成当前所有内容,建议把代码放入单独的文本框中,方便处理,也有较好的视觉效果。记得一定要拷贝一份副本!因为很可能因为代码量比较多,处理宏的时候卡死,只能强制退出WORD了。
2、当前文档新定义一个样式,命名为"code",专门用来对代码进行格式化。由于是代码,所以推荐中文使用黑体(注释等),而英文使用等宽字体(courier new)。步骤如图。
3、选中代码,单击样式库 ccode,将代码应用该样式
4、新建宏,步骤如图
5、将VBA代码(在下一步中)拷贝进去,保存后关闭 (有VBA或相关程序经验者可根据自己需要进行相关修改,如关键词和高亮颜色等)
复制内容到剪贴板
'scripttohighlightcodeIndocumentPrivateFunctionisKeyword(w)AsBooleanDimkeysAsNewCollectionWithkeys.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"EndWithisKeyword=isSpecial(w,keys)EndFunctionPrivateFunctionisSpecial(ByValwAsString,ByRefcolAsCollection)AsBooleanForEachiIncolIfw=iThenisSpecial=TrueExitFunctionEndIfNextisspeical=FalseEndFunctionPrivateFunctionisOperator(w)AsBooleanDimopsAsNewCollectionWithops.Add"+":.Add"-":.Add"*":.Add"/":.Add"&":.Add"^":.Add";".Add"%":.Add"#":.Add"!":.Add":":.Add",":.Add".".Add"||":.Add"&&":.Add"|":.Add"=":.Add"++":.Add"--".Add"'":.Add""""EndWithisOperator=isSpecial(w,ops)EndFunctionPrivateFunctionisType(ByValwAsString)AsBooleanDimtypesAsNewCollectionWithtypes.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"EndWithisType=isSpecial(w,types)EndFunctionSubSyntaxHighlight()DimwordCountAsIntegerDimdAsInteger'setthestyleofselectionSelection.Style="ccode"d=0wordCount=Selection.Words.CountSelection.StartOfwdWordWhiled<wordCountd=d+Selection.MoveRight(wdWord,1,wdExtend)w=Selection.TextIfisKeyword(Trim(w))=TrueThenSelection.Font.Color=wdColorBlueElseIfisType(Trim(w))=TrueThenSelection.Font.Color=wdColorDarkRedSelection.Font.Bold=TrueElseIfisOperator(Trim(w))=TrueThenSelection.Font.Color=wdColorBrownElseIfTrim(w)="//"Then'lInecommentSelection.MoveEndwdLine,1commentWords=Selection.Words.Countd=d+commentWordsSelection.Font.Color=wdColorGreenSelection.MoveStartwdWord,commentWordsElseIfTrim(w)="/*"Then'blockcommentWhileSelection.Characters.Last<>"/"Selection.MoveLeftwdCharacter,1,wdExtendSelection.MoveEndUntil("*")Selection.MoveRightwdCharacter,2,wdExtendWendcommentWords=Selection.Words.Countd=d+commentWordsSelection.Font.Color=wdColorGreenSelection.MoveStartwdWord,commentWordsEndIf'movethestartofselectiontonextwordSelection.MoveStartwdWordWend'prepareForsetlInenumberSelection.MoveLeftwdWord,wordCount,wdExtendSetLIneNumberEndSubPrivateSubSetLIneNumber()DimlinesAsIntegerlines=Selection.Paragraphs.CountSelection.StartOfwdParagraphForl=1TolineslIneNum=l&""Ifl<10ThenlIneNum=lIneNum&""EndIfSelection.Text=lIneNumSelection.Font.Bold=FalseSelection.Font.Color=wdColorAutomaticp=Selection.MoveDown(wdLine,1,wdMove)Selection.StartOfwdLineNextEndSub6、选定代码文本,然后执行highlight脚本:“视图”-“宏”- 选中“SyntaxHighlight”-“运行”,然后执行就可以了。处理较长代码时需要一定时间,请耐心等待。
注意事项:处理前一定要对原文章进行备份,以免前功尽弃。处理较长代码时需要一定时间,请耐心等待。