从Excel中的数据更新现有的PowerPoint

我的意图是打开现有的PowerPoint演示文稿以及现有的Excel工作簿,然后从Excel中运行一个VBAmacros,它将更新PowerPoint中的相应值。

为此,我已经确定了要在PowerPoint中更新的相应文本框的形状名称,方法是突出显示特定的文本框,并使用“ Format -> Align 。 然后我在Excel中创build了3列,其值为:

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

我使用macros(我不记得从哪个网站复制它):

 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 

我的问题是Slide 1不会更新在其相应的Shape name 。 当我执行这个macros时,唯一的动作就是出于某些原因, Slide 3字体大小被修改为35而不是16。我不明白为什么会发生这种情况。 字体大小被改变的形状的形状名称既不写入Excel工作簿,也不是与在Excel中写入的那两个形状名称相同的形状名称。

希望有人能够对此有所了解。

让我们把你的幻灯片和形状由Excel中列出,以确保他们是你所期望的。 有时他们真的很奇怪的命名/ IDED。 既然你有幻灯片没有改变,应该和幻灯片改变,不应该…我们肯定需要重新检查这些。 这将通过每个幻灯片和幻灯片上的每个形状进行迭代,并列出幻灯片ID和名称以及每个形状ID和名称。 我有一个演示文稿,第一张幻灯片是幻灯片297出于某种原因。 然后幻灯片250秒。 幻灯片50是第三个。 其余的都是奇数也。 OO

打开你的立即窗口来查看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 

另外,当你逐步浏览你的原始代码(而不是这个代码片段)时,你会在每个步骤的本地窗口中看到什么? 有什么奇怪的东西在那里跳出来吗? 任何variables填充意想不到的或不完全正确的?