自动更新PowerPoint幻灯片中的每张图片

时间:2014-05-19 20:36:48

标签: vba powerpoint

我有一个非常大而复杂的PowerPoint,其中包含全尺寸图像作为每张幻灯片的背景。我有一个目录,里面装满了这些背景图片,这些图片都是JPEG格式的。有时我会更改这些用Photoshop制作的照片,当我更改它们时,我将它们保存在同一目录中的原始JPEG上。

然后我必须在PowerPoint中更新它们。执行此操作的手动功能是右键单击照片,然后单击替换照片,然后从文件菜单中选择新的JPEG。我想在Visual Basic中编写一个宏,它将遍历整个幻灯片,并从更新的JPEG重新加载图形,而不必手动完成。我不知道是否可能,因为我不知道PowerPoint是否真的记得它所放置的每张图片的路径和文件名。

是否有图片属性包含用于首先粘贴图片的路径和文件名?如果有,我可以找到该属性,查询它,并将其用作重新加载的路径,从而通过幻灯片一直递归地更新图片。

这可能吗?

1 个答案:

答案 0 :(得分:0)

  

是否有图片属性,其中包含用于首先粘贴图片的路径和文件名?

我不是很清楚,但你可以使用Tags属性创建自己的:

http://msdn.microsoft.com/en-us/library/office/ff744290(v=office.15).aspx

您必须为每张幻灯片分配一个自定义标记,例如:

Sub AssignTag()
    Dim sld as Slide
    Set sld = ActivePresentation.Slides(1)
    sld.Tags.Add "img_location", "C:\files\image1.JPG"

End Sub

配置幻灯片Tags后,您可以执行以下操作从该位置进行更新:

Sub UpdateJPGs()
    Dim sld As Slide
    Dim path As String

    For Each sld In ActivePresentation.Slides
        path = sld.Tags("img_location")
        If Not path = vbNullString Then
            On Error Resume Next
            sld.Background.Fill.UserPicture path
            If Err Then
                MsgBox "Unable to update slide #" & sld.SlideNumber
                Err.Clear
            End If
            On Error GoTo 0
        End If
    Next
End Sub