PowerPoint 中的链接图像未更新

PowerPoint 中的链接图像未更新

我有一个包含两张幻灯片的 PowerPoint (2010) 演示文稿。两张幻灯片都包含一张图片(两张不同的图片),演示文稿设置为无限循环,直到ESC按下 。

Excel 文件每 5 分钟导出一次 PowerPoint 演示文稿中使用的两幅图像(它们是图表,但我无法在 PowerPoint 中使用链接到 Excel 文件的图表,因为 PowerPoint 会以某种方式破坏图表)。这些图像与原始图像不同,并且 Excel 设置为覆盖现有图像。我推测,PowerPoint 丢失了与文件的链接,因为“新”图像与“原始”图像不同。

有谁知道解决方案或其他方法吗?

答案1

我在幻灯片放映期间从互联网上更新天气图像时也遇到过这种情况。

由于 Powerpoint 在幻灯片放映时将图像文件存储在其自身内,因此它不会更新图像。

这意味着你必须使用以下方式触发它来更新链接VBA 代码或使用类似的插件;在幻灯片放映期间更新链接 PowerPoint 97 或更高版本的加载项或者LiveImage - 在 PowerPoint 中实时更新插入的链接图像

我不再使用该程序,也找不到我曾经使用过的代码。上述信息应该可以帮助您实现目标。

答案2

以下方法对我有用。首先,安装插件自动事件。在下面的示例中,使用了 2 张幻灯片的连续 PowerPoint 演示文稿(如果有更多幻灯片,请将第三个宏中的 if 语句更改为最后一张幻灯片的编号)。创建三个子项,执行相同的操作:

  1. 自动显示开始()
  2. 自动打开()
  3. OnSlideShowPageChange(ByVal SSW 作为 SlideShowWindow)

Auto_ShowBegin() 和 Auto_Open() 相同。

    Sub Auto_ShowBegin()
        Dim sldTemp As Slide
        Dim lngTemp As Long
        Dim lngCount As Long
        Dim myImage As Shape

        For Each sldTemp In ActivePresentation.Slides
            For lngCount = sldTemp.Shapes.Count To 1 Step -1
                With sldTemp.Shapes(lngCount)
                    If .Type = msoPicture Then
                        .Delete
                    End If
                End With
            Next
        Next

        Set sldTemp = ActivePresentation.Slides(1)

        Set myImage = sldTemp.Shapes.AddPicture( _
        FileName:="C:\Users\Name\image1.png", _
        LinkToFile:=msoFalse, _
        SaveWithDocument:=msoTrue, Left:=(ActivePresentation.PageSetup.SlideWidth / 2), _
        Top:=(ActivePresentation.PageSetup.SlideHeight / 2))

        myImage.Left = (ActivePresentation.PageSetup.SlideWidth / 2) - (myImage.Width / 2)
        myImage.Top = (ActivePresentation.PageSetup.SlideHeight / 2) - (myImage.Height / 2)

        Set sldTemp = ActivePresentation.Slides(2)

        Set myImage = sldTemp.Shapes.AddPicture( _
        FileName:="C:\Users\Name\image2.png", _
        LinkToFile:=msoFalse, _
        SaveWithDocument:=msoTrue, Left:=(ActivePresentation.PageSetup.SlideWidth / 2), _
        Top:=(ActivePresentation.PageSetup.SlideHeight / 2))

        myImage.Left = (ActivePresentation.PageSetup.SlideWidth / 2) - (myImage.Width / 2)
        myImage.Top = (ActivePresentation.PageSetup.SlideHeight / 2) - (myImage.Height / 2)
    End Sub

第三个宏:

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
    Dim sldTemp As Slide
    Dim lngTemp As Long
    Dim lngCount As Long
    Dim myImage As Shape
' AUTO UPDATE OF OLE LINKS MACRO
'
    If SSW.View.CurrentShowPosition = 2 Then
        For Each sldTemp In ActivePresentation.Slides
        For lngCount = sldTemp.Shapes.Count To 1 Step -1
            With sldTemp.Shapes(lngCount)
                If .Type = msoPicture Then
                    .Delete
                End If
            End With
        Next
    Next


    Set sldTemp = ActivePresentation.Slides(1)

    Set myImage = sldTemp.Shapes.AddPicture( _
    FileName:="C:\Users\Name\image1.png", _
    LinkToFile:=msoFalse, _
    SaveWithDocument:=msoTrue, Left:=(ActivePresentation.PageSetup.SlideWidth / 2), _
    Top:=(ActivePresentation.PageSetup.SlideHeight / 2))

    myImage.Left = (ActivePresentation.PageSetup.SlideWidth / 2) - (myImage.Width / 2)
    myImage.Top = (ActivePresentation.PageSetup.SlideHeight / 2) - (myImage.Height / 2)

    Set sldTemp = ActivePresentation.Slides(2)

    Set myImage = sldTemp.Shapes.AddPicture( _
    FileName:="C:\Users\Name\image2.png", _
    LinkToFile:=msoFalse, _
    SaveWithDocument:=msoTrue, Left:=(ActivePresentation.PageSetup.SlideWidth / 2), _
    Top:=(ActivePresentation.PageSetup.SlideHeight / 2))

    myImage.Left = (ActivePresentation.PageSetup.SlideWidth / 2) - (myImage.Width / 2)
    myImage.Top = (ActivePresentation.PageSetup.SlideHeight / 2) - (myImage.Height / 2)



    End If
End Sub

相关内容