如何通过VBA将Powerpoint 2013中的嵌入式映像保存到本地磁盘?

时间:2014-02-27 04:37:31

标签: image vba powerpoint

我在Microsoft Powerpoint 2013演示文稿中嵌入了很多图片。在Powerpoint 2013中,我可以右键单击图片对象,然后使用“另存为图片”将图像保存到本地磁盘。但这是手动的方式。我想知道是否有通过VBA自动化相同的方法?我能够遍历Shapes集合,然后确定对象的类型。但我无法弄清楚哪些属性或方法与将图片存储到本地磁盘相关?以下是迭代Shapes集合并确定Shape是否为msoPicture类型的代码片段

  For currentSlideIndex = 1 To totalSlidesCount
    Set currentSlide = ActivePresentation.Slides(currentSlideIndex)
    For Each mediaShape In currentSlide.Shapes
        mediaCounter = mediaCounter + 1 'for each shape in the slide
        If currentSlideIndex = 3 Then
              If mediaShape.Type = msoPicture Then
              MsgBox ("Shape Type Picture is " + CStr(mediaShape.Type) )
            End If

        End If
    Next mediaShape
    mediaCounter = 0 'Reset to 0 for the new slide
Next            

1 个答案:

答案 0 :(得分:2)

您可以使用形状的.Export方法将当前形状导出到图片。

这通常是隐藏的,因此默认情况下你不会获得intellisense帮助,所以:

进入IDE 按F2打开对象浏览器 右键单击Classes右侧的窗格,您可以在顶部看到“Members of ...”。 选中Show Hidden Members

旁边的复选框

现在,当您在幻灯片形状上键入.Export时,您将获得智能感知指导。

另请注意,如果形状为Type 14(占位符),则它可以包含图片,因此您可能需要添加以下内容:

If mediaShape.Type = msoPlaceholder Then
  If mediaShape.PlaceholderFormat.ContainedType = msoPicture Then
    ' it's also a picture
  End If
End if

为了增加娱乐价值,您可能还有.Type = msoLinkedPicture,甚至在某些情况下,msoEmbeddedOLEObject恰好是一张图片。