【问题标题】:PowerPoint VBA adding image to every slidePowerPoint VBA 将图像添加到每张幻灯片
【发布时间】:2016-10-06 23:03:20
【问题描述】:

我正在编写一个简单的宏来更改字体并为幻灯片中的每张幻灯片添加徽标。

问题是每张幻灯片上的字体都在更新,但图像只粘贴在一张幻灯片上。 - 所以我最终在一张幻灯片上叠加了 30 张图片(不是我需要的每张幻灯片上的 1 张图片)

我有以下:

Sub InsertLogoOnEveryPage()

Dim sld As Slide
Dim shp As Shape
Dim sFontName As String
Dim oTop As Integer

' font:
sFontName = "Times"

For Each sld In ActivePresentation.Slides

    Debug.Print sld.Name
    'Insert logo.
    ActiveWindow.Selection.SlideRange.Shapes.AddPicture( _
    FileName:="PATH\Logo_RGB.png", _
    LinkToFile:=msoFalse, _
    SaveWithDocument:=msoTrue, Left:=60, Top:=oTop, _
    Width:=330, Height:=330).Select

    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

任何解决这个问题的帮助都很棒,谢谢!

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    两件事:

    关于你的代码:尽量避免使用.SelectSelection

    ActiveWindow.Selection.SlideRange.Shapes.AddPicture 应该是sld.Shapes.AddPicture

    ActiveWindow 将只是您的 PPT 应用中的可见幻灯片。

    关于这个想法:

    您应该转到View 菜单,Slide Master 并编辑您使用的默认布局以避免使用某些代码! ;)

    Sub InsertLogoOnEveryPage()
    
    Dim sld As Slide
    Dim shp As Shape
    Dim sFontName As String
    Dim oTop As Single
    
    ' font:
    sFontName = "Times"
    
    For Each sld In ActivePresentation.Slides
    
        Debug.Print sld.Name
        'Insert logo.
        sld.Shapes.AddPicture FileName:="C:\Users\R3uKH2\Desktop\Dive zones.png", _
            LinkToFile:=msoFalse, _
            SaveWithDocument:=msoTrue, Left:=60, Top:=oTop, _
            Width:=330, Height:=330
    
        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
    

    【讨论】:

    • 您需要将 oTop 调暗为 Single 而不是 Integer,否则当 PPT/VBA 将 .Top 值(如 10123 转换为 10)时,您会遇到错误或失去准确性
    • @SteveRindsberg:我没看到,谢谢!我纠正了! ;)
    • @Ali_Bean :查看史蒂夫的评论!它将帮助您正确放置图像!
    【解决方案2】:

    您是否考虑过使用大师? Master 将允许您为使用该 Master 的所有幻灯片定义字体和图像。

    【讨论】:

    • 一些演示文稿的布局很复杂,所以我想保留它,并添加新的品牌标志。不过谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-07-30
    • 2015-07-26
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多