PPT 如何保持每一页都有一个 logo ,且始终置顶?
2018-04-18 本文已影响0人
芸熙熙
2019年12月4日更新:
如果各位不想运行什么代码的话,直接推荐下载「Nordri Tools」,这个插件集成了类似的功能。
以下正文:
上周我让实习生妹子做一份 PowerPoint,要求在每页的固定位置上添加一个公司 logo。
下班前我问她做得怎么样了,她说内容都好了,还差几页就把 logo 都填充完整了。
啊?
我看她熟练的在每一页上不断的 Ctrl + C 、 Ctrl + V ……
停!
我说,「为什么你不用母板啊? 在母板视图里添加 logo ,这样每一页都有哦。」
妹子委屈的说,「这个方法我早就试过了,但是在很多页上会出现 logo 被其他图片挡住的情况。」




「那你试过把图片置顶、或者把占位符挪开的方法吗?」
「早就试过了,不然我也不会用这个笨办法一个个复制粘贴啊。」
怎么办?还有几份 PowerPoint 都需要加 logo,这样下去岂不是太机械化、重复化?
于是我想试试用 PowerPoint 自带的宏功能,看看能不能解决这个问题。
其实原理很简单,无非就是在每一页的固定位置上 insert 一张图片而已。

代码如下:
Sub InsertLogoOnEveryPage()
Dim sld As Slide
Dim shp As Shape
Dim sFontName As String
Dim oTop As Single
sFontName = "Times"
For Each sld In ActivePresentation.Slides
Debug.Print sld.Name
sld.Shapes.AddPicture FileName:="D:\PATH\Classroom logo.jpg", _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, Left:=850, Top:=440, _
Width:=100, Height:=100
For Each shp In sld.Shapes
With shp
If .HasTextFrame Then
If .TextFrame.HasText Then
.TextFrame.TextRange.Font.Name = sFontName
End If
End If
End With
Next shp
oTop = oTop + 10
Next sld
End Sub
其中我们主要改:
sld.Shapes.AddPicture FileName:="D:\PATH\Classroom logo.jpg", _ \\公司 logo 图片的路径
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, Left:=850, Top:=440, _\\ 图片位置
Width:=100, Height:=100\\ 图片大小





最喜极而泣的是:每个 logo 都不再被 PPT 原有的图片、文本框挡住!
希望这段代码对你们有用 :)
后记
如果是在制作 PPT 的最初就在模板视图里编辑好占位符、设计元素,这种问题都不太可能会出现。
但有的时候,我们可能没有保存模板、或者是在别人七拼八凑的 PPT 上做修改,那么这种方式可能就派上用场了。