Mettre à jour PowerPoint existant à partir de données Excel

Mon intention est d'ouvrir une présentation PowerPoint existante avec un classur Excel existant, puis d'exécuter une macro VBA d'Excel qui mettrait à jour les valeurs correspondantes dans PowerPoint.

Pour cela, j'ai identifié le nom Forme des zones de text correspondantes que je souhaite mettre à jour dans PowerPoint en mettant en surbrillance la textbox spécifique et en utilisant Format -> Align . Ensuite, j'ai créé 3 colonnes dans Excel avec les valeurs:

  Slide index Shape name Value 1 Title 2 =CONCATENATE("REPORT ";YEAR(TODAY())) 1 Placeholder for date1 =TODAY() 

J'utilise la macro (dont je ne me souviens malheureusement pas de quel site je l'ai copié):

 Sub writedata() Dim c As Object Dim shapeslide Dim shapename Dim shapetext Set ppapp = GetObject(, "Powerpoint.application") Set pppres = ppapp.ActivePresentation For Each c In Blad2.Range("a2:a" & Blad2.Range("a" & Rows.Count).End(xlUp).Row) shapeslide = Blad2.Range("a" & c.Row) shapename = Blad2.Range("b" & c.Row) shapetext = Blad2.Range("c" & c.Row).Text pppres.Slides(shapeslide).Shapes(shapename).TextEffect.Text = shapetext Next End Sub 

Mon problème est que la Slide 1 ne sera pas mise à jour du tout dans son Shape name correspondant. La seule action qui se produit lorsque j'exécute cette macro est que, pour une raison quelconque, Slide 3 a sa taille de police modifiée pour devenir la taille 35 au lieu de la taille 16. Je ne comprends pas pourquoi cela se produit. Le nom de la forme de la forme dont la taille de la police est modifiée n'est ni écrit dans le classur Excel, ni le même nom de forme que l'un de ces deux écrits dans Excel.

Espérons que quelqu'un peut faire preuve de lumière dans cela.

Permet d'get vos diapositives et vos forms classées par excel pour vous assurer qu'elles sont ce que vous attendez. Parfois, ils sont vraiment bizarrement nommés / identifiés. Étant donné que vous avez des diapositives qui ne changent pas et que vous devriez changer, cela ne devrait pas … Nous devons absolument vérifier ces deux. Cela interviendra par chaque diapositive et chaque forme sur cette diapositive et répertorie l'ID de la diapositive et le Nom et chaque ID et nom de la forme. J'ai une présentation et la première diapositive est la diapositive 297 pour une raison quelconque. Ensuite, la glissière 250 est la seconde. La diapositive 50 est 3ème. Le rest est également totalement numéroté. OO

Activez votre window immediates pour voir le text de debugging.

 Sub SlidesShapes() Dim i As Integer, j As Integer Set ppapp = GetObject(, "PowerPoint.Application") Set ppres = ppapp.ActivePresentation For i = 1 To ppres.Slides.Count'slides and shapes start counting at 1 not 0 Debug.Print ppres.Slides(i).SlideID Debug.Print ppres.Slides(i).Name For j = 1 To ppres.Slides(i).Shapes.Count Debug.Print ppres.Slides(i).Shapes(j).ID Debug.Print ppres.Slides(i).Shapes(j).Name Next Next End Sub 

De plus, lorsque vous passez votre code d'origine (pas cet extrait), qu'est-ce que vous voyez dans votre window locale pour chaque étape? Quelque chose d'étrange qui continue là-bas? Des variables peuplées de quelque chose d'inattendu ou pas complètement correctes?