Imagens vinculadas no PowerPoint não atualizando

5

Eu tenho uma apresentação do PowerPoint (2010) com dois slides. Ambos os slides contêm uma imagem (duas imagens diferentes) e a apresentação é definida para repetir infinitamente até que ESC seja pressionado.

Um arquivo do Excel exporta as duas imagens usadas na apresentação do PowerPoint a cada 5 minutos (elas são gráficos, mas não posso usar um gráfico vinculado ao arquivo do Excel no PowerPoint, porque o PowerPoint estraga o gráfico de alguma forma). As imagens são diferentes das originais e o Excel está definido para sobrescrever as imagens existentes. O que eu presumo, é que o PowerPoint perde o link para o arquivo, uma vez que a imagem 'nova' é diferente da imagem 'original'.

Alguém conhece uma solução ou um método alternativo para fazer isso?

    
por Robin Trietsch 04.06.2014 / 18:51

2 respostas

4

O seguinte funcionou para mim. Primeiro, instale o suplemento AutoEvents . No exemplo abaixo, uma apresentação contínua em PowerPoint de dois slides é usada (se você tiver mais, altere a instrução if na terceira macro para o número do último slide). Crie três subs, que façam o mesmo:

  1. Sub Auto_ShowBegin ()
  2. Sub Auto_Open ()
  3. Sub OnSlideShowPageChange (ByVal SSW como SlideShowWindow)

Auto_ShowBegin () e Auto_Open () são os mesmos.

    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

E a terceira macro:

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
    
por 04.06.2014 / 21:49
6

Eu me deparei com isso para atualizar imagens meteorológicas da Internet durante uma apresentação de slides.

Como o Powerpoint armazena os arquivos de imagem em si mesmo enquanto a apresentação de slides está sendo executada, ela não atualiza as imagens.

Isso significa que você precisa ativá-lo para atualizar os links usando o código VBA ou usar um add in like; Atualize links durante o complemento da apresentação de slides para o PowerPoint 97 ou posterior ou LiveImage - atualize a imagem vinculada inserida em tempo real no PowerPoint .

Eu não uso mais esse programa e não consigo encontrar o código que usei. As informações acima devem ajudá-lo a chegar onde você quer estar.

    
por 04.06.2014 / 19:50