从Excel中的数据更新现有PowerPoint

时间:2015-09-28 10:35:45

标签: excel vba excel-vba powerpoint powerpoint-vba

我的目的是打开现有的PowerPoint演示文稿以及现有的Excel工作簿,然后从Excel运行VBA宏,这将更新PowerPoint中的相应值。

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

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

我使用宏(遗憾的是我不记得我从哪个网站复制过它):

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中更新。我执行此宏时发生的唯一操作是,由于某种原因,Slide 3将其字体大小修改为大小为35而不是大小16.我无法理解为什么正在发生。更改字体大小的形状的形状名称既不会写入Excel工作簿,也不会与Excel中编写的形状名称相同。

希望有人可以对此有所了解。

1 个答案:

答案 0 :(得分:2)

让我们获取excel列出的幻灯片和形状,以确保它们符合您的期望。有时他们真的被奇怪地命名/ IDed。既然你有幻灯片没有改变那应该和幻灯片改变不应该...我们肯定需要重复检查这些。这将遍历每张幻灯片和该幻灯片上的每个形状,并列出幻灯片ID和名称以及每个形状ID和名称。我有一个演示文稿,第一张幻灯片是幻灯片297由于某种原因。然后滑块250是第二个。幻灯片50是第3名。其余的都编号奇怪。 o.O

打开immediates窗口以查看调试文本。

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

此外,当您单步执行原始代码(而不是此代码段)时,您在本地窗口中看到的每个步骤是什么?那里有什么奇怪的东西跳出来对你?任何填充了意外或不完全正确的变量?