How to “Refresh Data” via VBA in Power Point?

前端 未结 3 540
甜味超标
甜味超标 2020-12-17 07:15

so far I have tried the Chart.Refresh and Chart.Update and also ChartData.UpdateLinks and neither work. My question is sim

相关标签:
3条回答
  • 2020-12-17 07:44

    This may help, It opens and closes the embedded Excel object

    For Each s In ActivePresentation.Slides(i)
        If s.Type = msoEmbeddedOLEObject Then
          s.Select                               'select the object
            s.OLEFormat.Activate                 'Activate it (like 2x click))
            ActiveWindow.Selection.Unselect      'To let it close
            ActiveWindow.View.GotoSlide s.Slideindex  'make current slide active
         End If
    Next s
    
    0 讨论(0)
  • 2020-12-17 07:48

    This code worked. But it works only if both files are open (the excel if its only one): The Power Point and the Excel with the data. It actually Refreshes all charts one by one.

        Sub updatelinks()
    Dim sld As Slide, shp As Shape
    
    For Each sld In ActivePresentation.Slides
    
       For Each shp In sld.Shapes
         On Error Resume Next
         shp.LinkFormat.Update
        Next
    
    Next
    
    MsgBox ("Graficos actualizados con éxito")
    
    End Sub
    

    So, If the Excel is on a shared location, the code wont work because it takes too much time to retrieve the data. Im still looking for a way to do this. Thanks!

    0 讨论(0)
  • 2020-12-17 07:50

    I changed the code a little bit and with this little change, the refresh of the charts works again automatically.

    Many times, if you share your excel ppt combo the links break and after restoring them the automated chart refresh doesn`t work.

    With the downstanding macro the automated refresh will work again:

    Sub REFRESH()
    
        Dim pptChart As Chart
        Dim pptChartData As ChartData
        Dim pptWorkbook As Object
        Dim sld As Slide
        Dim shp As Shape
    
        For Each sld In ActivePresentation.Slides
            For Each shp In sld.Shapes
                If shp.HasChart Then
                    Set pptChart = shp.Chart
                    Set pptChartData = pptChart.ChartData
                    pptChartData.Activate
                    shp.Chart.REFRESH
                
                    On Error Resume Next
                    On Error GoTo 0
    
                End If
            Next
        Next
    
        Set pptWorkbook = Nothing
        Set pptChartData = Nothing
        Set pptChart = Nothing
    
    End Sub
    

    The code below is in a macro in the Excel workbook which also contains the source data. Not sure if the code would be the same running it from PowerPoint. I simply open my Excel Workbook and then have it update the PowerPoint for me.

    I have been looking forever to find an answer to this and finally managed to get it to work with a ton of reading and trial-and-error. My problem was that I have a PowerPoint with a lot of graphs that were created with CTRL+C and CTRL+V, so none of them are linked. This is how I got it to work:

    Dim myPresentation As PowerPoint.Presentation
    Dim sld As PowerPoint.Slide
    Dim shp As PowerPoint.Shape
    Dim myChart As PowerPoint.Chart
    
    For Each sld In myPresentation.Slides
        For Each shp In sld.Shapes
            If shp.HasChart Then
                Set myChart = shp.Chart
                myChart.ChartData.Activate
                myChart.Refresh
            End If
        Next
    Next
    

    I don't know if there is unnecessary code in there but I am just happy that I finally got it to work so I'm not touching it anymore.

    0 讨论(0)
提交回复
热议问题