通过vba在powerpoint链接对象中更改SourceFullName时缓慢

时间:2016-05-23 22:32:05

标签: vba performance powerpoint-vba sourcelink

我正在经历SLOW更改,而不是更新链接对象的powerpoint演示文稿中的链接。 示例代码如下:

 For Each sld In ActivePresentation.Slides
    For Each shp In sld.Shapes
       If shp.Type = msoLinkedOLEObject Then 
            Src_Old = Split(shp.LinkFormat.SourceFullName, "!")(0)
            Src_New = Src_Path & "\" & Src_Book_Name
            shp.LinkFormat.SourceFullName = Replace(shp.LinkFormat.SourceFullName, Src_Old, Src_New)
       End If           
    Next shp
Next sld

在每次迭代期间,外部源文件将重新打开并且链接将被更新,这会显着减慢运行速度。所以问题是:

  1. 是否有强制不更新链接但只是更改SourceFullName的文本?
  2. 即使答案为否,无论如何都要在每次迭代时停止重新打开外部源文件?
  3. 提前致谢。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。这个单一命令行最多需要16秒才能执行。将更新方法更改为手动改进为11秒。真正解决的是在只读节点中打开backgound中的参考文件,甚至没有向用户显示。低至0.6秒。对update方法也有效。

var flashvars = {
  qualityurl: 'avq/480p.xml',
  accountHash: 'xxxxxxxxxxxxxxxxxxx',
  showMenu: 'true',
  lang: 'translations/en.xml',
  mrt: 20,
  payload: 'xxxxxxxxxxxxxxxxxxx,588,5,'+providerId.pass_id
};

当你完成时别忘了清理乱七八糟的东西。

Dim xlApp As Object
Dim xlWorkBook As Object

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
xlApp.DisplayAlerts = False
 Set xlWorkBook = xlApp.Workbooks.Open(strDBPath, False, True)

答案 1 :(得分:0)

在更改SourceFullName属性之前,可以尝试使用此方法切换到手动更新模式:

shp.LinkFormat.AutoUpdate = ppUpdateOptionManual

然后使用Update方法在需要时手动刷新内容:

shp.LinkFormat.Update

您也可以使用BreakLink方法,但我不确定这是否是您想要的:

shp.LinkFormat.BreakLink