MICROSOFT

EP03. “Create a Footer Before Printing 打印前自动生成页脚”

首页 Microsoft 工具 Excel · VBA · Events · EP03
约 4 分钟· #EP03#Excel#Events
🔒 登录后可标记已读
  • 用 Workbook 对象的 BeforePrint 事件,在每次打印之前自动把当前文件的完整路径写进页脚
  • 方便打印出来的纸本文件能追溯到是哪个文件、放在哪里
  • 前置知识:EP01 的事件绑定方法
  • 学完能理解 PageSetup 对象怎么用代码控制页面设置

重点内容


适用版本

桌面版通用(Excel 365 / 2021 / 2019 等)。


绑定 BeforePrint 事件

  1. 打开 VBE
  2. 在 Project Explorer 双击 ThisWorkbook(不是某个 Sheet,因为这是工作簿层级的事件)
  3. 左边下拉选 Workbook,右边下拉选 BeforePrint

[截图:Workbook BeforePrint 事件下拉选择]


完整代码

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    ActiveSheet.PageSetup.LeftFooter = ActiveWorkbook.FullName
End Sub
  • PageSetup 对象包含所有页面设置属性(左页脚、下边距、纸张大小、左边距等)
  • LeftFooter 是页脚左边的文字区域,还有 CenterFooter、RightFooter 可以用同样方式设置
  • ActiveWorkbook.FullName 会返回当前工作簿的完整路径 + 文件名

实操示例

执行打印(Ctrl + P 预览或直接打印),观察页脚左下角是否自动出现文件的完整路径。

[截图:打印页脚显示文件路径]


学完你会

  • ✅ 知道 BeforePrint 是工作簿层级事件,要写在 ThisWorkbook 里
  • ✅ 用 PageSetup.LeftFooter/CenterFooter/RightFooter 设置页脚内容
  • ✅ 用 ActiveWorkbook.FullName 取得当前工作簿的完整路径

常见错误

  • 把代码写在某个 Sheet 对象里而不是 ThisWorkbook,BeforePrint 是工作簿层级事件,写错位置不会触发
  • ActiveWorkbookThisWorkbook 搞混——如果打印时活动工作簿不是这个文件本身(比如从别的文件触发打印),两者结果会不一样
  • 忘记页脚有长度限制,文件路径太长可能被截断显示不全

Sources

Blog / Website:

  1. Create a Footer Before Printing