更改链接Excel工作表 - 图形对象Powerpoint VBA

时间:2017-11-23 21:25:47

标签: excel excel-vba powerpoint powerpoint-vba vba

我面临着VBA编码的麻烦。

我有一个包含数据和图表的各种工作表的Excel文件。这些图表链接到Powerpoint(图表已被复制并粘贴"链接"作为对象)。

问题在于,我现在拥有超过130张幻灯片的巨大Powerpoint,每张幻灯片上有大约18张图表......超过2000张图表。

我想更改工作表的名称,还要复制一些幻灯片,用过滤后的数据填充图表。

我的问题: - 如果更改工作表名称,当然链接已损坏。使用UI手动更新所有内容是不可能的; - 在PowerPoint中复制幻灯片时,图表仍然链接到与原始幻灯片相同的Excel工作表 - 更改链接的唯一方法是删除所有图表,在Excel中复制工作表 - 填充新数据 - 复制粘贴将每个图表逐一链接到PowerPoint中。

我曾尝试使用宏但是......它会更改链接的整个地址,删除所有工作表信息。有没有办法修改硬地址但保留相同的excel文件 - 只更改工作表?

以下是我要用来替换表格的内容" T3"由表" 100s"。宏运行没有错误,但所有对象都被WHOLE" 100s"的副本替换。我的excel文件中的工作表:(

 Sub EditPowerPointLinks()

Dim oldFilePath As String
Dim newFilePath As String
Dim pptPresentation As Presentation
Dim pptSlide As Slide
Dim pptShape As Shape

'The old file path as a string (the text to be replaced)
oldFilePath = "\\Server\01xxxx\xxx\xx\X 4.xlsx!T3"

'The new file path as a string (the text to replace with)
newFilePath = "\\Server\01xxxx\xxx\xx\X 4.xlsx!100s"

'Set the variable to the PowerPoint Presentation
Set pptPresentation = ActivePresentation

'Loop through each slide in the presentation
For Each pptSlide In pptPresentation.Slides

    'Loop through each shape in each slide
    For Each pptShape In pptSlide.Shapes

        'Find out if the shape is a linked object or a linked picture
        If pptShape.Type = msoLinkedPicture Or pptShape.Type _
        = msoLinkedOLEObject Then

            'Use Replace to change the oldFilePath to the newFilePath
            pptShape.LinkFormat.SourceFullName = Replace(LCase _
            (pptShape.LinkFormat.SourceFullName), LCase(oldFilePath), newFilePath)

        End If
    Next
Next

'Update the links
pptPresentation.UpdateLinks


End Sub

是否有人知道如何仅更改工作表名称并保留所有对象名称?

非常感谢, 亚瑟

1 个答案:

答案 0 :(得分:0)

事实上,该公式运作良好。替换链接不起作用,因为在我复制的原始工作表中,选择窗格中的第一个对象是图3.复制工作表时,Excel会自动尝试从1开始,因此图3成为图1。 ,当替换链接时,图表不匹配。

要使此公式有效,请确保在Excel的“选择窗格”中,您的图表在原始工作表和新工作表之间的命名方式相同。