第一页页眉/页脚的格式代码不同

时间:2019-06-04 20:17:37

标签: excel vba

我想用VBA为应打印的Excel 2013工作表的首页设置不同的页眉和页脚。页眉和页脚应包含诸如页码,活动工作表的名称和文件名之类的信息。 Microsoft关于格式代码(https://docs.microsoft.com/en-us/office/vba/excel/concepts/workbooks-and-worksheets/formatting-and-vba-codes-for-headers-and-footers)的官方文档为此提供了各种选项,并且所有这些格式代码都可以在除第一页之外的所有页面上正常工作-它们的分配方式似乎有所不同(例如,应显示“&N”页数,但改为显示文件名)。如何为首页的页眉/页脚使用正确的格式代码?

我试图将这些格式代码分配给常量,但这是行不通的,因为只有当它们包含在页眉或页脚字符串中时,这些代码才会被解析。我还记录了一个宏,同时手动更改标题(它可以正常工作),但是该宏也无法产生正确的输出。

Sub formatCodesTest()
    With ActiveSheet.PageSetup
        .DifferentFirstPageHeaderFooter = True
        .FirstPage.LeftHeader.Text = "&N"
    End With
    ActiveSheet.PrintPreview
End Sub

我希望输出为页面数(如Microsoft文档中所述),但实际输出为文件名。

2 个答案:

答案 0 :(得分:0)

我现在设法解决了这个问题。不用依赖Microsoft文档,而是在GUI中手动输入页眉/页脚,然后使用即时窗口(Crtl + G)进行调试并查询相关页眉的内容(例如? ActiveSheet.PageSetup.FirstPage.RightHeader.Text)。然后,它将为您提供正确的格式代码。

如果其他人知道为什么会发生这种情况(以及为什么其他人无法复制它),我会很乐意接受这作为答案。

答案 1 :(得分:0)

我在Excel 2019中遇到相同的问题:我想在右脚注中显示“第1页,共5页”。 由于只涉及首页的特殊设置,因此我通过以下方式解决了该问题:

ActiveSheet.PageSetup.FirstPage.RightFooter.Text = "Page 1 of " + Trim(Str(ActiveSheet.PageSetup.Pages.Count))

请注意,这仅在填写单元格,更改页面布局,添加由VBA代码完成的手动分页符的情况下才有效,因为在Excel之前现在无法正确计算页面数量。