专著、学位论文和毕业论文等学术文本有时会使用不同的页码来区分正文前、正文和后文。
然后我需要创建目录卡区分了前置文本和正文的页数。为此,我想我可以放置一个字段,其中包含前置文本部分的最后一页和文档的最后一页的页码(这不是,{NUMPAGES}
因为这会给我总页数)
为了更好地理解问题是什么,这是文档的结构:
- 正文前编号从第三页开始,使用罗马数字 (iii),到图例列表末尾 (xvi) 结束。此页的绝对编号也是 16。
- 正文部分之后的编号从 1 开始(阿拉伯数字),但在文档的绝对编号中,这是第 17 页。然后此编号以第 120 页结束,但在绝对编号中该页为 136。
然后我需要一个打印 XVI 和 120 的字段。我可以这样做:
{={NUMPAGES}-16}
但如果前置词增加了页面数量,那就行不通了
我也会很感激 VBA 中的解决方案。
答案1
通常在页脚中我记得语法是 x of xx,其中 xx 是最后一页。
当您将格式从罗马字母更改为阿拉伯字母时,您会在某处添加...RestartNumberingAtSection
这是一个需要检查的示例脚本
出错时继续下一步
Const wdPageBreak = 7 Const wdPageNumberStyleUppercaseRoman = 1
设置 objWord = CreateObject("Word.Application") objWord.Visible = True 设置 objDoc = objWord.Documents.Add()
设置 objSection = objDoc.Sections(1) 设置 objSelection = objWord.Selection
设置 objPageNumbers = objSection.Footers(1).PageNumbers objPageNumbers.NumberStyle = wdPageNumberStyleUppercaseRoman objPageNumbers.ShowFirstPageNumber = FALSE objPageNumbers.RestartNumberingAtSection = TRUE objPageNumbers.StartingNumber = 17 objPageNumbers.Add(1)
objSelection.TypeText “这是第 1 页。” objSelection.InsertBreak(wdPageBreak) objSelection.TypeText “这是第 2 页。” objSelection.InsertBreak(wdPageBreak) objSelection.TypeText “这是第 3 页。”