【问题标题】:How to Save Embedded Images in Powerpoint 2013 To Local Disk Through VBA?如何通过 VBA 将 Powerpoint 2013 中嵌入的图像保存到本地磁盘?
【发布时间】:2014-03-30 07:53:52
【问题描述】:

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

  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            

【问题讨论】:

    标签: image vba powerpoint


    【解决方案1】:

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

    这通常是隐藏的,所以默认情况下你不会得到智能感知帮助,所以:

    进入 IDE 按 F2 打开对象浏览器 在 Classes 右侧的窗格中单击鼠标右键,您会在顶部看到“Members of ...”。 在显示隐藏成员旁边打勾

    现在,当您在幻灯片形状上键入 .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 恰好是一张图片。

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 1970-01-01
      • 2020-12-17
      • 2020-05-10
      • 2016-09-30
      • 1970-01-01
      • 2013-12-09
      • 1970-01-01
      相关资源
      最近更新 更多