我在 Word 2016 中定义了两个用于开始部分的样式。它们被称为 Header_num_1 和 Header_num_2。现在页眉是这样完成的
{ STYLEREF Header_num_1 \* MERGEFORMAT }
{ STYLEREF Header_num_2 \* MERGEFORMAT }
这样可以让章节标题出现在标题中,例如
Introduction
Legal Issues
我还有一些空白页,这些页没有章节标题。在这种情况下,页眉会重复,这是我不想要的。有没有关于如何插入空白页不带页眉的条件的想法?为空白页引入一个新章节是一个选择,但我想知道 VBA 中是否有类似 if 命令的东西。
答案1
我不认为存在一种单一的、易于自动化的方法来做到这一点,但是根据这些空白页出现的具体方式,您可以考虑以下方法之一......
一旦知道了分页,就让 Word 在适当的位置插入一个完全空白的页面,方法是根据需要故意插入奇数分页符或偶数分页符。
插入您自己的分节符以创建单页部分并从该部分的标题中删除 STYLEREF 字段。我怀疑这实际上是最简单、最自动化的通用方法(尽管它使部分创建稍微复杂一些),因为您可以考虑编写 VBA 来检测空白页并用空白部分替换它们。
如果你可以把某物在每个空白页上(即页面不是真正为空的,并且您可以手动确保某些内容不会移动到另一个页面),那么您可以考虑将以下嵌套字段代码放在页面的某个位置
{ SEQ "blanks{ SECTION }p{ PAGE }" \r1\h }
然后在标题中使用
{ IF { SEQ "blanks{ SECTION }p{ PAGE }" \c = 0 "{ STYLEREF Header_num_1 \*MERGEFORMAT }
{ STYLEREF Header_num_2 \*MERGEFORMAT }" }
与往常一样,所有 {} 都必须是特殊字段代码括号对,您可以使用 ctrl-F9 在 Windows Word 中插入。
在这种情况下,您需要确保所有字段都已更新,Word 才有可能获得正确的页眉。此外,Word 并不特别“喜欢”页眉/页脚中的条件,并且在您编辑时并不总是显示正确的值。
这之所以有效,是因为对于序列 X,即使文档中没有 { SEQ } 字段来设置该值,{ SEQ X \c } 也有一个值(它是 0)。因此,例如,如果您需要第 3 节第 4 页为空白,则正文中的字段代码使用
{ SEQ "空白{ SECTION }p{ PAGE }" \r1\h }
IE
{ SEQ "空白3p4" \r1\h }
在标题中,仅测试 SEQ 序列“blanks3p4”的值在该页面上在上一页中,Word 将查找 blanks3p3 的值,结果为 0。
我不确定这是否适用于您可能拥有的所有页码格式(有些可能会导致无效的序列名称),但这可能是您可以使用的最通用的格式。如果您可以依赖简单的页码(例如,单个序列编号为 1,2,3..,那么您可以将名称简化为“空白{ PAGE }”