如何解决MS WORD TOC:如何在标题中的字符“:”之前或之后放置不同的颜色?
我在 Word 中有一个包含多个部分的文本文档,我已经创建了目录。我创建了一个 TOC 以便能够自动更新它,它用于此目的。 通过 alt+F9 我有 TOC \O "1-2" \H \U
你可以看到符号\H,我需要链接到标题。
我可以在标题的两个点之前和之后应用所需的颜色,即形式: [xxxxx xxxx xxxx : (红色)] [yyyyy yyyyy yyyyy (黑色)]
我希望这种色差也显示在我的摘要 (TOC) 中。所以我添加了指令 \* MERGEFORMAT 这给出: TOC \O "1-2" \* MERGEFORMAT \H \U
然而,通过这样做,我失去了我的链接,因为指令 \H 不再有效。
所以我改用 VBA 代码了。
但我不知道怎么说: xxxxxxx(红色):xxxxxx(黑色)
x 是可变的,两个点 (:) 总是出现在我的标题中的标题中。 从 2 点 (:) 开始,其余标题必须为黑色的代码是什么。或者在 2 点 (:) 之前标题的颜色必须是红色?
例如:
示例/标题:(红色)这是我的标题(黑色)
示例标题二:(红色)这是我的第二个示例(黑色)
其他/示例/附加:(红色)这是最后一个标题(黑色)
感谢您的见解
编辑:
嗨,
(
TO_TIMESTAMP(TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS'),'YYYY-MM-DD HH24:MI:SS') -
TO_TIMESTAMP(INSP_FIN_DT,'YYYY-MM-DD HH24:MI:SS')
) AS REST_TIME
晚上好,
上面的代码效果很好,让我可以为目录中每个标题的前 2 个单词着色。
x y(红色):x y z(黑色)
v w(红色):y z(黑色)
所以有可能。
有时我的标题超过2个字,我不得不修改它。 我必须把这个词的价值;在这种情况下,2 点字符 ( : ) 而不是它的位置。
x y z(红色):(红色或黑色)x y z(黑色)
但我不知道什么 vba 代码可以做到这一点,这就是我在这个论坛上提问的原因,我确定有人可以帮助我吗?
谢谢。
EDIT 2 (26/05/2021 10:45) :我再说一遍,我只需要 VBA 代码,仅此而已……谢谢。
解决方法
您不需要任何代码。如果没有 \H 开关,目录将自动重现您应用于标题的任何字体颜色。您最多只需刷新目录即可。
即使没有\H 开关,您的目录也会通过页面#s 链接到引用的内容。 \H 开关所做的只是启用来自目录文本的链接。
无论如何,尝试使用 VBA(或手动)将颜色应用于目录都是浪费时间,因为任何导致目录刷新的事情(例如打印预览或打印文档)会抹去所有的颜色。
无论如何,您甚至不需要一个宏来为您描述的目录着色——您只需要一个通配符在目录上的查找/替换操作,其中: 查找 = [!^t^13]@: 替换 = ^& 并将替换颜色设置为红色。当然,您可以将其实现为宏,但我不明白为什么有人会打扰...
,下面的代码将应用您需要的颜色。要大写 TOC,您应该将 TOC 样式的字体修改为 AllCaps
Sub ColorTOC()
Dim tocRange As Range
With ActiveDocument
If .TablesOfContents.Count = 0 Then
MsgBox "Aucune table des matières dans le document !",vbInformation
Else
With .TablesOfContents(1)
Set tocRange = .Range.Duplicate
tocRange.Collapse wdCollapseStart
Do Until tocRange.End = .Range.End
tocRange.MoveEndUntil ":"
tocRange.MoveEnd wdCharacter,1
With tocRange
If .Text <> Chr(9) Then
.Font.ColorIndex = wdRed
End If
End With
tocRange.Collapse wdCollapseEnd
tocRange.MoveUntil vbCr
tocRange.Move wdCharacter,1
Loop
End With
End If
End With
End Sub
更新目录时,将显示以下对话框。
选择第一个选项不会导致格式丢失,但 TOC 将不包括任何新添加的标题。第二个选项将包括任何新添加的标题,但它也会删除格式。
如果文档设置了“打印前更新字段”选项(应确保页码等正确),则将提示用户更新目录。这将在打印和导出为 PDF 之前发生。为确保您的 TOC 具有正确的格式,您需要编写代码来响应 DocumentBeforePrint
事件,以便您可以重新应用格式。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。