如何让MS Word 2010中的REF域始终可见?
解决Word中REF域在Show/Hide隐藏时不可见的问题
我之前也碰到过这个棘手的问题——页眉页脚里的REF域因为继承了正文书签内容的隐藏格式,导致关闭Show/Hide后就看不到解析结果,总不能要求所有用户都去开“显示隐藏文本”选项对吧?给你几个经过验证的解决方案,按需选择:
方法1:强制REF域使用非隐藏格式(推荐,保留域的动态更新)
这是最靠谱的方法,通过给REF域添加格式开关,让它忽略原书签内容的隐藏属性,强制用你设置的非隐藏样式显示:
- 首先按
Shift+F9切换到域代码显示模式,找到你的REF域,比如原来的{ REF my_bookmark_1 } - 在域代码末尾添加
\* CHARFORMAT开关,修改后变成:{ REF my_bookmark_1 \* CHARFORMAT } - 选中整个域代码(包括前后的大括号),右键选择「字体」,取消勾选「隐藏」选项,点击确定
- 最后按
F9更新域,再按Shift+F9切换回域结果显示模式 - 现在不管Show/Hide是否开启,REF域的解析内容都会正常显示,而且还能保持动态更新(正文表单域内容变化时,更新域就能同步)
方法2:确保正文书签的文本表单域无隐藏格式
如果你的正文文本表单域本身不需要隐藏,那直接修正源内容的格式就行:
- 选中正文里带书签的文本表单域,右键选择「字体」,取消「隐藏」复选框
- 回到页眉/页脚,选中REF域按
F9更新,之后关闭Show/Hide也能正常看到内容
方法3:用宏将REF域转为普通文本(适合不需要动态更新的场景)
如果你的内容不需要后续动态更新,也可以用VBA宏把REF域的解析结果转换成普通文本,这样就彻底摆脱域的格式依赖:
- 按
Alt+F11打开VBA编辑器,插入一个新模块,粘贴以下代码:
Sub ConvertREFToText() Dim doc As Document Dim fld As Field Set doc = ActiveDocument For Each fld In doc.Fields If fld.Type = wdFieldRef Then fld.Unlink End If Next fld End Sub
- 运行宏后,所有REF域都会被转换成普通文本,不管什么设置都能正常显示,但缺点是正文内容变化时不会自动同步,需要手动更新或者重新运行宏
小提示:如果域代码显示不出来,先检查Word选项里的「显示」设置,确保「显示域代码而非域值」没有被勾选,或者直接用
Shift+F9快速切换。
内容的提问来源于stack exchange,提问作者hmm




