Je sais que cette question a déjà été posée et répondue à plusieurs reprises, mais malheureusement, ne peut pas trouver de solution de travail. Donc, j'ai une présentation très simple dans PowerPoint (juste une diapositive avec un graphique qui a été créé à partir du tableau Excel) et besoin de mettre à jour avec des données récentes via VBA, quel que soit le script Excel ou PowerPoint.Mise à jour graphique PowerPoint en utilisant VBA
D'abord, j'ai essayé de PowerPoint le script le plus évident:
Sub update1()
ActivePresentation.UpdateLinks
End Sub
Il semble fonctionner, mais n'a pas modifié. Ensuite, j'ai commencé à chercher des solutions sur le web et trouver, par exemple, topic on StackOverflow.
Pour une réponse par Optimistic Busy il fonctionne sans erreur et me donne une sortie dans MessageBox, mais il ne change rien dans le graphique PowerPoint.
Pour une réponse par rinusp il me donne une erreur
Erreur d'exécution '91': variable objet ou variable bloc non définie
sur la ligne
For each sld in myPresentation.Slides
J'ai essayé toutes ces macros dans PowerPoint.
J'ai également essayé des réponses d'autres questions sur StackOverflow, mais malheureusement rien ne fonctionne pour moi. Je serai heureux si quelqu'un m'aide à trouver une solution de travail - ne importe pas d'Excel ou de PowerPoint si le script VBA doit être exécuté.
Merci d'avance.
MISE À JOUR: Je suis en train de mettre à jour ma question avec des exemples complets de code que j'ai essayé de lancer. Ces exemples ont été fournis par les utilisateurs Optimistic Busy et rinusp sur le sujet StackOverflow mentionné ci-dessus.
Ce code lorsqu'il est exécuté à partir de PowerPoint me donne une erreur « Erreur d'exécution « 91 »: Variable objet ou variable bloc fixe pas »
Sub update2()
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
End Sub
et ce code fonctionne sans erreurs et donne une sortie en boîte de message, mais ne met pas à jour le graphique
Sub update3()
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 ("Update chart")
End Sub
Salut, pouvez-vous poster le code complet que vous essayez de travailler. L'erreur semble être liée à ne pas avoir une référence à l'objet avec lequel vous interagissez. –
@RyanWildry, j'ai mis à jour ma question avec des exemples complets de code. – Hasek