zoukankan      html  css  js  c++  java
  • PowerPoint中的LinkFormat对象

    几天前有个朋友(simon)来信问“如果在PPT里边插入影音文件,如何在保存文件的时候将影音文件也保存出来?”

    呵呵,以前我也没处理过,通过测试,发现问题的关键是如何知道影音文件的路径,通过分析,发现其实并不是很难,主要是以前没有注意LinkFormat对象,其实在MSDN中有如下的范例:

    With ActivePresentation.Slides(1).Shapes(1)
        
    If .Type = msoLinkedOLEObject Then
            
    With .LinkFormat
                .SourceFullName 
    = "c:\my documents\wordtest.doc"
                .AutoUpdate 
    = ppUpdateOptionAutomatic
            
    End With
        
    End If
    End With

    其中对SourceFullName 属性解释如下:

    应用于示例特性返回或设置链接 OLE 对象的源文件的名称或路径。可读写。String 类型。

    使用如下的代码测试了一下:

    '<summary>
        'Test过程就是在在幻灯片里边插入一个空白幻灯片
        '然后在幻灯片中插入一个影片文件,然后查看Shape对象的LinkFormat对象的FullName属性就行了
        '至于保存的时候如何处理,这个简单,你写一段宏就可以了
        '剩下的自己发挥吧
    '
    </summary>
    Sub InsertAvi()
        ActiveWindow.Selection.SlideRange.Shapes.AddMediaObject(FileName:
    ="F:\clock.avi"Left:=239.625, Top:=149.625).Select
        ActiveWindow.Selection.Unselect
    End Sub

    Sub ShowPath()
        
    If Application.ActivePresentation.Slides(1).Shapes(1).MediaType = ppMediaTypeMovie Then
            
    '关键是你理解一下LinkFormat对象
            'LinkFormat.SourceFullName就是文件的保存路径
            MsgBox Application.ActivePresentation.Slides(1).Shapes(1).LinkFormat.SourceFullName
        
    End If
    End Sub


    这些是在VBA里边测试的,通过了,我想最主要的就是这个LinkFormat.SourceFullName这句话了,其实simon的想法很好,因为如果PPT中的影音文件如果不保存的话,如果放到别的机器上,就不能正常播放了,AVI就变成了一个图片了,呵呵,所以还是有用的。

    我想余下的最重要的就是Update这个方法了,如下:

    For Each sld In ActivePresentation.Slides
        For Each sh In sld.Shapes
            If sh.Type = msoLinkedOLEObject Then
                sh.LinkFormat.Update
            End If
        Next
    Next

    通过这个修改绝对路径为相对路径,应该就不是问题了。
  • 相关阅读:
    UVA
    UVA
    模板——扩展欧几里得算法(求ax+by=gcd的解)
    UVA
    模板——2.2 素数筛选和合数分解
    模板——素数筛选
    Educational Codeforces Round 46 (Rated for Div. 2)
    Educational Codeforces Round 46 (Rated for Div. 2) E. We Need More Bosses
    Educational Codeforces Round 46 (Rated for Div. 2) D. Yet Another Problem On a Subsequence
    Educational Codeforces Round 46 (Rated for Div. 2) C. Covered Points Count
  • 原文地址:https://www.cnblogs.com/Duiker/p/272404.html
Copyright © 2011-2022 走看看