别再手工改了!Word导入长文档,页眉页脚全乱?用这招秒级搞定
在编辑文档的过程中,有时需要从其他文档引用资料,便捷的方法是使用“插入”-“对象”-“文件中的文字”,快速导入其他文章内容。

但是,其他文档通常会带有页眉和页脚。复制过来的内容很有可能将原文档的页眉或页脚一并带过来,这样就与当前文档的页眉、页脚不统一了。如果只有短短几页,手工修改还算比较快。但如果导入的文章内容很多,就会涉及大量页眉页脚需要逐一调整。显然,手工修改的方式非常低效。
这种情况下,就不要试图用手工修改,而是利用 Word 自带的 VBA功能来实现。
复制代码
Sub CopyHeaderFooterFromCustomSection() Dim startSecNum As Variant Dim baseSec As Section Dim currentSec As Section Dim i As Integer, j As Integer Dim totalSections As Integer totalSections = ActiveDocument.Sections.Count ' 1. 弹窗询问正文的起始节数 startSecNum = InputBox("当前文档共有 " & totalSections & " 个节。" & vbCrLf & _ "请输入【正文开始】的节号(例如正文在第3节,就输入3):", "指定正文起始节", "2") ' 检查用户是否取消了输入或输入留空 If startSecNum = "" Then Exit Sub ' 检查输入是否合法 If Not IsNumeric(startSecNum) Then MsgBox "请输入有效的数字!", vbCritical Exit Sub End If Dim baseIndex As Integer baseIndex = CInt(startSecNum) If baseIndex < 1 Or baseIndex > totalSections Then MsgBox "输入的节号超出范围!", vbCritical Exit Sub End If If baseIndex = totalSections Then MsgBox "您选择的是最后一节,后面已经没有需要同步的节了。", vbExclamation Exit Sub End If ' 2. 开始执行同步逻辑 Application.ScreenUpdating = False ' 以你指定的这一节作为基准 Set baseSec = ActiveDocument.Sections(baseIndex) ' 从基准节的“下一节”开始遍历到文档末尾 For i = (baseIndex + 1) To totalSections Set currentSec = ActiveDocument.Sections(i) ' 统一页面设置 currentSec.PageSetup.DifferentFirstPageHeaderFooter = baseSec.PageSetup.DifferentFirstPageHeaderFooter currentSec.PageSetup.OddAndEvenPagesHeaderFooter = baseSec.PageSetup.OddAndEvenPagesHeaderFooter ' 复制页眉 For j = 1 To 3 currentSec.Headers(j).LinkToPrevious = False currentSec.Headers(j).Range.FormattedText = baseSec.Headers(j).Range.FormattedText Next j ' 复制页脚 For j = 1 To 3 currentSec.Footers(j).LinkToPrevious = False currentSec.Footers(j).Range.FormattedText = baseSec.Footers(j).Range.FormattedText Next j Next i Application.ScreenUpdating = True ActiveDocument.ActiveWindow.View.Type = wdPrintView MsgBox "处理完成!已成功将第 " & baseIndex & " 节的页眉页脚同步到后面所有节。" & vbCrLf & _ "第 " & baseIndex & " 节之前的页面(如目录、封面)已完美保留,未受影响。", vbInformationEnd Sub
使用说明:
如果界面没有“开发工具”菜单,那么在菜单“文件”-“选项”-“自定义功能区”-右侧勾选“开发工具”。

在开发工具下方的功能区中,点击 Visual Basic

进入编辑器,点击“插入”-选择“模块”

将代码粘贴到模块窗口中

直接按F5运行代码
在弹出的对话框中输入正文起始节号。比如2或者3,确定,等待运行结束即可。
![]() |
![]() |
代码说明:
考虑到有些文档的目录或者封面页眉页脚与正文不同,因此在代码中加入了选择正文起始节的功能。在输入了中文起始节的节号之后,就可以以正文的页眉页脚为标准,统一后面所有节的页眉页脚。
代码运行后会弹出一个输入框,问你:“正文是从第几节开始的?”
假设第1节是封面,第2节是目录,第3节才是正文。你只需输入 3。
代码就会以第3节为基准,把第3节的页眉页脚同步给第4节、第5节……直到最后一节。而第1节(封面)和第2节(目录)将完好无损,不受任何影响。
总结
因为长文档的封面、目录排版各不相同(有时候目录占1节,有时候目录和封面在同一节),手动输入起始节在实际工作中最不易出错。你只需要在 Word 底部状态栏看一眼正文是第几节(如果状态栏没显示,右键状态栏勾选“节”即可),然后输入对应的数字,就能完美保护目录的同时搞定后面所有的正文页。
如果你觉得这篇文章对你有帮助的话,不妨关注一下公众号👇
也可以分享给你的朋友。
夜雨聆风

