Połączone obrazy w programie PowerPoint nie są aktualizowane

5

Mam prezentację PowerPoint (2010) z dwoma slajdami. Oba slajdy zawierają obraz (dwa różne obrazy), a prezentacja jest ustawiana tak, aby zapętlała się w nieskończoność, aż do ESCnaciśnięcia.

Plik Excel eksportuje dwa obrazy używane w prezentacji PowerPoint co 5 minut (są to wykresy, ale nie mogę użyć połączonego wykresu do pliku Excel w PowerPoint, ponieważ PowerPoint jakoś rujnuje wykres). Obrazy różnią się od oryginalnych, a program Excel jest ustawiony na zastąpienie istniejących obrazów. Zakładam, że PowerPoint traci link do pliku, ponieważ „nowy” obraz różni się od „oryginalnego” obrazu.

Czy ktoś zna rozwiązanie lub alternatywną metodę, aby to zrobić?

Robin Trietsch
źródło
Wygląda na to, że istnieje lepszy sposób niż PowerPoint na robienie tego, co próbujesz zrobić.
Nattgew
@fooot Czy masz sugestie dotyczące programu lub aplikacji?
Robin Trietsch

Odpowiedzi:

6

Natknąłem się na to podczas aktualizacji zdjęć pogodowych z Internetu podczas pokazu slajdów.

Ponieważ Powerpoint przechowuje pliki obrazów w sobie podczas pokazu slajdów, nie aktualizuje obrazów.

Oznacza to, że musisz go uruchomić, aby zaktualizować linki za pomocą kodu VBA lub użyć dodatków podobnych; Aktualizuj łącza podczas pokazu slajdów Dodatek do programu PowerPoint 97 lub nowszego lub LiveImage - aktualizuj wstawiony połączony obraz w czasie rzeczywistym w programie PowerPoint .

Nie używam już tego programu i nie mogę znaleźć kodu, którego kiedyś użyłem. Powyższe informacje powinny pomóc Ci dotrzeć tam, gdzie chcesz być.

CharlieRB
źródło
Dzięki, kod VBA pomógł mi. Poprawiłem to trochę, a teraz działa tak, jak powinno. Wyślę kod jako odpowiedź poniżej.
Robin Trietsch
4

Poniższe działało dla mnie. Najpierw zainstaluj dodatek AutoEvent . W poniższym przykładzie użyto ciągłej prezentacji 2 slajdów w programie PowerPoint (jeśli masz więcej, zmień instrukcję if w trzecim makrze na numer ostatniego slajdu). Utwórz trzy napisy, które robią to samo:

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

Auto_ShowBegin () i Auto_Open () są takie same.

    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

I trzecie makro:

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
Robin Trietsch
źródło