从 Excel 中的数据更新现有 PowerPoint
Update existing PowerPoint from data in Excel
我打算打开现有的 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 中写入的两个形状名称之一不同。
希望有人能对此有所启发。
让 excel 列出您的幻灯片和形状,以确保它们符合您的期望。有时候他们真的很奇怪named/IDed。由于您的幻灯片不应该更改,而幻灯片不应该更改……我们绝对需要仔细检查这些。这将遍历每张幻灯片和该幻灯片上的每个形状,并列出幻灯片 ID 和名称以及每个形状 ID 和名称。我有一个演示文稿,由于某种原因,第一张幻灯片是幻灯片 297。然后是幻灯片 250。第 50 张幻灯片是第 3 张幻灯片。其余的也都是奇怪的编号。 o.O
打开您的即时消息 window 以查看调试文本。
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
此外,当您逐步执行原始代码(不是此代码段)时,您在本地人中看到了什么 window 每一步?那里有什么奇怪的事情让你跳出来吗?是否有任何变量填充了意想不到的或不完全正确的东西?
我打算打开现有的 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 中写入的两个形状名称之一不同。
希望有人能对此有所启发。
让 excel 列出您的幻灯片和形状,以确保它们符合您的期望。有时候他们真的很奇怪named/IDed。由于您的幻灯片不应该更改,而幻灯片不应该更改……我们绝对需要仔细检查这些。这将遍历每张幻灯片和该幻灯片上的每个形状,并列出幻灯片 ID 和名称以及每个形状 ID 和名称。我有一个演示文稿,由于某种原因,第一张幻灯片是幻灯片 297。然后是幻灯片 250。第 50 张幻灯片是第 3 张幻灯片。其余的也都是奇怪的编号。 o.O
打开您的即时消息 window 以查看调试文本。
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
此外,当您逐步执行原始代码(不是此代码段)时,您在本地人中看到了什么 window 每一步?那里有什么奇怪的事情让你跳出来吗?是否有任何变量填充了意想不到的或不完全正确的东西?