链接到Excel的功率点表 - 如何更改源(VBA)?

时间:2016-04-12 09:15:35

标签: excel vba excel-vba powerpoint-vba

  1. 我有很大的演示文稿(约300张幻灯片)我需要制作几个版本,每个版本都连接到不同的excel文件。我有代码可以更改prestations中所有形状的链接。它对图表都有好处,但链表有问题。源更改是正确的,但在此表更改的更改范围内(范围设置为第一个单元格A1)。 有没有办法保持范围不变?
  2. 附加问题:更改图表来源非常快(<1s),而更改链接表源需要一些时间(~15s)。这会成为一个有很多表的问题。 当我运行代码几次〜50次幻灯片一次运行时它运行良好(需要约5-10分钟),但是当我尝试在所有~300张幻灯片上运行它时我等了30分钟它没有完成(没有粉碎,看起来像程序冻结了)。我真的很好奇为什么会出现这个问题。
  3. 我用于链接更改的代码:

    Sub UpdateLinks()
    Dim ExcelFile
    Dim exl As Object
    Set exl = CreateObject("Excel.Application")
    
     'Open a dialog box to promt for the new source file.
    ExcelFile = exl.Application.GetOpenFilename(, , "Select Excel File")
    
    Dim i As Integer
    Dim k As Integer
    
     'Go through every slide
    For i = 1 To ActivePresentation.Slides.Count
        With ActivePresentation.Slides(i)
             'Go through every shape on every slide
            For k = 1 To .Shapes.Count
                'Turn of error checking s that it doesn 't crash if the current shape doesn't already have a link
                On Error Resume Next
                 'Set the source to be the same as teh file chosen in the opening dialog box
                .Shapes(k).LinkFormat.SourceFullName = ExcelFile
                If .Shapes(k).LinkFormat.SourceFullName = ExcelFile Then
                     'If the change was successful then also set it to update automatically
                    .Shapes(k).LinkFormat.AutoUpdate = ppUpdateOptionAutomatic 'other option is ppUpdateOptionManual/ppUpdateOptionAutomatic
                End If
                On Error GoTo 0
            Next k
        End With
    Next i
    End Sub
    

    欢迎所有提示! :)

1 个答案:

答案 0 :(得分:0)

您是否看过.SourceFullName返回的内容?通常,它不仅仅是文件名,还包括指示链接指向的工作表中的工作表和范围的其他代码。您似乎只是将其更改为替换Excel文件的名称。

相反,请尝试使用“替换”将新Excel文件的名称替换为.SourceFullName中旧Excel文件的名称。这样就可以保留链接文本的其余部分。