在 word 模板的第二页插入页眉,而第二页尚不存在
Posted
技术标签:
【中文标题】在 word 模板的第二页插入页眉,而第二页尚不存在【英文标题】:Insert header on second page of a word template, while the second page doesn't exist yet 【发布时间】:2022-01-17 03:45:15 【问题描述】:我需要创建一个 Word 模板,它会动态地将徽标添加到信函的标题中。为了简化用户体验,原始模板仅生成一页。 流程是这样的:
-
用户通过 Word 中的“文档>新建”打开模板
用户可以通过用户窗体在不同的公司和徽标之间进行选择
根据选择的公司/徽标,在信中添加不同的内容
我确实有一个限制,第一页的页脚与第二页以后的页脚不同。
这意味着,当我通过 VBA 代码在第一页的页眉中添加图片并添加文本(或只是空白)时,徽标不会重复。
所以基本上我的问题是,如果我可以从第二页开始将图片添加到页眉,而页面还不存在?
我目前的代码类似于以下内容,尽管我已经删除了用于图像格式化的部分,因为我认为它不相关:
With ActiveDocument
.Sections(1).Footers(wdHeaderFooterFirstPage) _
.Range.InlineShapes.AddPicture(path)
End With
我也尝试过在后面的页面中抢先添加页眉,但似乎不起作用
With ActiveDocument
.Sections(1).Footers(wdHeaderFooterFirstPage) _
.Range.InlineShapes.AddPicture(path)
End With
With ActiveDocument
.Sections(1).Footers(wdHeaderFooterPrimary) _
.Range.InlineShapes.AddPicture(path)
End With
【问题讨论】:
更好的方法是将不同的标题保存为模板中的快速部件/构建块。然后,您可以使用您的代码在文档中插入相关部分。然后,您就有了一个独立的解决方案,不依赖于其他文件。 【参考方案1】:我已经包含了两个声明来放置图片。两者都可以:
Sub AddGraphicPage2()
Application.ScreenUpdating = False
Dim aSection As Section
For Each aSection In ActiveDocument.Sections
With aSection
.Headers(wdHeaderFooterPrimary).Shapes.AddPicture FileName:="C:\picture.png"
.Headers(wdHeaderFooterPrimary).Range.InlineShapes.AddPicture FileName:="C:\picture.png"
End With
Next aSection
Application.ScreenUpdating = True
End Sub
检查所有部分使其成为通用宏,它还可以处理比单个页面更复杂的文档。
【讨论】:
感谢您的建议 - 不过我并没有真正解决我的问题。当我实施您的解决方案时,仍然会在第一页上正确嵌入图片,但是当我键入并进入第二页时,标题中没有图像。 @MaxAbbe - 您需要检查您的页面设置。在布局选项卡上,您应该只选中“不同的第一页”,在这种情况下,主要页眉/页脚适用于所有其他页面。如果您选中了“奇偶不同”,则主要页眉/页脚仅适用于奇数页,这可以解释为什么第 2 页上没有图像。 @TimothyRylatt - 感谢您的帮助。我检查了该选项未选中。虽然一时觉得自己真的很傻,但我可能错过了这样一个基本的设置。我通过调用函数插入图像进行了更多尝试,我观察到一些奇怪的行为:当我通过复制和粘贴添加大量文本时,图像不会出现在第 1 页上。但是如果我删除标题中的图片在第 2 页上,它下面还有另一张图片。看起来,由于某种奇怪的原因,标题向下移动了一页。你知道为什么吗? @MaxAbbe - 不是没有看到你的完整代码。您正在复制的内容或粘贴的位置可能会导致问题。就个人而言,我不会基于使用复制和粘贴的解决方案。 是的,Copy&Paste 的使用只是为了快速添加大量文本——想想“Lorem Ipsum”——风格。我确实解决了我的问题,尽管这完全是另一个问题(请参阅我自己的答案)。不过还是谢谢你的帮助!【参考方案2】:当我添加第二个(以及第三个等)页面时,我想通了,为什么图像“移动”到第 2 页。这与我添加图像的方式有关。
最初我将附加图像的锚点定义为Anchor:=Selection.Range
。我只是在使用代码,我知道它可以处理图像的格式。
所以我刚刚删除了锚点,现在图像可以正确附加到每个标题中,无论是在第 1 页、第 2 页还是第 13 页。
请看下面对我有用的代码。
当然,我确实在我需要时调用的函数中正确实现了它;-)
ActiveDocument.Sections(1).PageSetup.DifferentFirstPageHeaderFooter = True
' Insert image in header for page 1
With ActiveDocument.Sections(1).Headers(wdHeaderFooterFirstPage)
With .Shapes.AddPicture(FileName:=filename, LinkToFile:=False, SaveWithDocument:=True)
.name = "Logo_Page1"
.Width = CentimetersToPoints(21)
.Height = CentimetersToPoints(3)
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.Left = CentimetersToPoints(0)
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Top = CentimetersToPoints(0)
.WrapFormat.Type = wdWrapBehind
End With
End With
' Insert image in header from page 2 onwards
With ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary)
With .Shapes.AddPicture(FileName:=filename, LinkToFile:=False, SaveWithDocument:=True,Anchor:=Selection.Range)
.name = "Logo_Page2"
.Width = CentimetersToPoints(21)
.Height = CentimetersToPoints(3)
.RelativeHorizontalPosition = wdRelativeHorizontalPositionPage
.Left = CentimetersToPoints(0)
.RelativeVerticalPosition = wdRelativeVerticalPositionPage
.Top = CentimetersToPoints(0)
.WrapFormat.Type = wdWrapBehind
End With
End With
【讨论】:
ActiveDocument.Sections(1).Headers(wdHeaderFooterPrimary).Shapes.AddPicture 看起来很熟悉。我将不胜感激。谢谢!以上是关于在 word 模板的第二页插入页眉,而第二页尚不存在的主要内容,如果未能解决你的问题,请参考以下文章
怎样在计算机中给第二页添加页脚(第一页不显示页脚),显示页码和文字“PowerPoint”?