本文阅读约几分钟,顺便拯救一下你丑哭的打印页眉页脚
大家好,我是你们的老朋友,Excel VBA 野生推广大使。
今天聊一个存在感极低,但关键时刻能救命的对象——
HeaderFooter 👑
(别划走,它不是教你手打页眉,是用代码操控页眉页脚的暗黑艺术)
一、你被页眉页脚支配过吗?
场景还原:
领导扔来一张表格,说“打印出来加个页码、公司logo、部门名称、日期、第几页共几页……”
你手动一页一页改?
一按打印预览,破防了:封面也有页码,附录也对不齐。😭
这时候 HeaderFooter 就像半夜三更还在给你改方案的老实人——你平时想不起它,但它能帮你一键统一几十个工作表的页眉页脚。
二、HeaderFooter 到底是个啥?
在 VBA 里,每一个 Worksheet 对象下面都有一个 PageSetup 对象,
PageSetup 下面又藏着 LeftHeader、CenterHeader、RightHeader,
以及它们的三位脚部亲戚:LeftFooter、CenterFooter、RightFooter。
简单说:
属性 | 作用 |
.LeftHeader | 页眉左区域 |
.CenterHeader | 页眉中间区域 |
.RightHeader | 页眉右区域 |
.LeftFooter | 页脚左区域 |
.CenterFooter | 页脚中间区域 |
.RightFooter | 页脚右区域 |
每个区域都可以塞文字、日期、页码、图片、文件路径,甚至格式化代码(字体、大小、颜色)。
三、基础示例:不用手敲的页眉
Sub 给当前表加上专业页眉()With ActiveSheet.PageSetup.LeftHeader = "&""黑体,粗体""&12 公司机密".CenterHeader = "2024年度销售报告".RightHeader = "&D &T"End WithEnd Sub
解释一下这些 & 符号魔法:
代码 | 含义 |
&"字体,样式" | 设置字体和样式(粗体/斜体) |
&数字 | 字体大小 |
&D | 当前日期(短格式) |
&T | 当前时间 |
&P | 当前页码 |
&N | 总页数 |
&Z | 文件路径 |
&F | 文件名 |
👉 示例:
"第 &P 页,共 &N 页" → “第 3 页,共 10 页”
四、批量操作为什么爽?
比如你一个工作簿里有 30 张工作表,想全部加上“页码 + 公司名 + 打印日期”:
Sub 批量设置所有工作表的页脚()Dim ws As WorksheetFor Each ws In ThisWorkbook.WorksheetsWith ws.PageSetup.LeftFooter = "&""微软雅黑""&9 某某科技有限公司".CenterFooter = "第 &P 页,共 &N 页".RightFooter = "打印日期:&D"End WithNext wsMsgBox "30张表一键搞定,喝口咖啡继续摸鱼"End Sub
你省下来的时间,可以多学一个冷笑话 😏
五、骚操作:页眉里加图片(Logo)
Excel 的 HeaderFooter 还能插图片:
With ActiveSheet.PageSetup.LeftHeader = "&G" ' &G 表示图片占位符.SetOjectPicture PictureFile:="C:\logo.png", LeftHeaderEnd With
⚠️ 注意:.SetOjectPicture 在不同 Office 版本中参数名略有差异,建议先录制宏参考用法。
六、避坑指南(血泪史总结)
不要对图表工作表(Chart Sheet)直接使用 HeaderFooter
会报错。图表工作表走的是 Charts.PageSetup,写法类似但对象不同。
页脚最大字符数有限(约 255 个,不同版本有差异)
别把整本小说怼进去。
设置后一定要看一眼打印预览
VBA 不帮你预览,你得自己 ActiveWindow.View = xlPrintView
路径里的反斜杠要双写
"C:\folder\pic.jpg" → 字符串里写成 "C:\\folder\\pic.jpg"
七、实战小作业(看完就会)
要求:
所有工作表的页眉中央显示“第 X 页,共 Y 页”
页眉右侧显示当前日期
页脚左侧显示文件名
隐藏封面页(第1页)的页眉
参考答案结构:
Sub 作业解法()Dim ws As WorksheetDim i As Integeri = 1For Each ws In ThisWorkbook.WorksheetsWith ws.PageSetupIf i = 1 Then.CenterHeader = "" ' 封面无页眉Else.CenterHeader = "第 &P 页,共 &N 页"End If.RightHeader = "&D".LeftFooter = "&F"End Withi = i + 1Next wsEnd Sub
八、写在最后
HeaderFooter 就是 VBA 里的“扫地僧”——平时看不见,一旦你被打印排版折磨过,就知道它有多香。
别让重复劳动消耗你的热情,
能写一行代码解决的事,
就不值得你加班到深夜。
愿你从此打印报表时,不再流泪。
夜雨聆风