0

我的PowerPoint演示文稿中有一些图像和视频。取决于每种格式(jpg,mp3,jpeg,...)我希望它制作不同的东西,所以我需要知道它是什么样的文件。Visual Basic 中有什么可以实现的吗?

已编辑

我想将 iPad 支持的图像和视频与不支持的图像和视频区分开来。这就是为什么我需要知道它们的格式。

4

2 回答 2

1

编辑:明确说明 - 下面的解决方案仅适用于链接到文件的形状!

Function WhatTypeOfMedia(SHP As Shape)

    Select Case Right(SHP.LinkFormat.SourceFullName, 4)
        Case ".jpg", "jpeg"
            WhatTypeOfMedia = "Picture type"
        Case ".wav", ".mp3"
            WhatTypeOfMedia = "Music type"
        '... end other possible types put here
    End Select
End Function

要为活动演示的第一张幻灯片进行测试运行,请尝试以下代码:

Sub Take_format_Linked()

    On Error Resume Next    'required for these files which are not linked
    Dim SHP As Shape
    For Each SHP In ActivePresentation.Slides(1).Shapes
    '1st check if format is linked- best option:
    If Len(SHP.LinkFormat.SourceFullName) > 0 Then
        If Err.Number = 0 Then
        'if so, let's call function
            Debug.Print WhatTypeOfMedia(SHP)
        'here you can do what you want based on function result
        Else
            Err.Clear
        End If
    End If
    Next

End Sub

结果,您可以在立即窗口中获得哪种形状是哪种类型的信息。您可以使用这些类型在 main sub 中运行您需要的内容。在这个简单的想法On Error Resume Next中,如果 Shape 没有链接,我会一直避免错误。

于 2013-04-13T15:48:20.210 回答
1

正如已经指出的那样,您可以获取链接文件的文件类型,但无法获取嵌入文件的文件类型。但是,如果您不需要在 VBA 中执行此操作或可以在 VBA 中操作 ZIP 文件,请以 zip 格式打开 PPTX 并查找媒体文件夹。在那里你会找到任何嵌入的文件(图片、声音、电影)。

它们的格式可能与最初的格式不同;PPT 有时会在导入图像时转换图像。但考虑到你所追求的,这不应该是一个问题。

于 2013-04-15T00:03:44.613 回答