PowerPoint中的LinkFormat对象

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

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

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

其中对SourceFullName 属性解释如下:

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

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

None.gif ' <summary>
None.gif
     ' Test过程就是在在幻灯片里边插入一个空白幻灯片
None.gif
     ' 然后在幻灯片中插入一个影片文件,然后查看Shape对象的LinkFormat对象的FullName属性就行了
None.gif
     ' 至于保存的时候如何处理,这个简单,你写一段宏就可以了
None.gif
     ' 剩下的自己发挥吧
None.gif'
</summary>
None.gif
Sub  InsertAvi()
None.gif    ActiveWindow.Selection.SlideRange.Shapes.AddMediaObject(FileName:
= " F:\clock.avi " Left : = 239.625 , Top: = 149.625 ).Select
None.gif    ActiveWindow.Selection.Unselect
None.gif
End Sub
None.gif
None.gif
Sub  ShowPath()
None.gif    
If  Application.ActivePresentation.Slides( 1 ).Shapes( 1 ).MediaType  =  ppMediaTypeMovie  Then
None.gif        
' 关键是你理解一下LinkFormat对象
None.gif
         ' LinkFormat.SourceFullName就是文件的保存路径
None.gif
         MsgBox  Application.ActivePresentation.Slides( 1 ).Shapes( 1 ).LinkFormat.SourceFullName
None.gif    
End   If
None.gif
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

通过这个修改绝对路径为相对路径,应该就不是问题了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值