【问题标题】:How to create many powerpoint presentations containing a slide with a variable from an Excel table?如何创建许多包含幻灯片的幻灯片演示文稿,其中包含 Excel 表格中的变量?
【发布时间】:2020-02-03 12:07:19
【问题描述】:

我正在尝试使用 Excel 表格中的值创建 PowerPoint 演示文稿。

A2、A3、A4 等都将包含一个名称。每个 pptx 文件中的幻灯片将是一个包含三个段落的测试,并且在开头这些单元格中的名称以这种方式寻址:

亲爱的'BA2',

[第 1 段]

[第 2 段]

您忠实的,
...

其他单元格也是如此。

Dim ppApp As PowerPoint.Application
Dim ppPres As PowerPoint.Presentation
Dm ppSlide As PowerPoint.Slide

Set ppApp = New PowerPoint.Application

ppApp.Visible = True
ppApp.Activate

Set ppPres = ppApp.Presentations.Add 

Set ppSlide = ppPres.Slides.Add(1, ppLayoutBlank)

Set ppApp = New PowerPoint.Application

ppApp.Visible = True
ppApp.Activate

set ppSlide = ppPres.Slides.Add(2,pp LayoutBlank(
ppSlide.Select

Range("A1").CurrentRegion.Copy
ppSlide.Shapes.Paste

此代码会将整个表格复制并粘贴到一张幻灯片中。与我想要的完全不同,但我需要知道的是如何使用 for 循环或类似的东西将这些单元格逐个单元格粘贴到单独的工作表中。

【问题讨论】:

  • 首先,让我们在术语方面保持一致:您想要为每个通信提供单独的“演示文稿”,还是希望为每个通信提供一个带有单独“幻灯片”的演示文稿?其次,我们是否在这里处理表格(如果是,为什么?)或者这不能通过在每张幻灯片中包含一个简单的 TextBox 对象来实现,其中包含对应名称和 2 个段落?
  • 您好,感谢您的回复。每个单独的演示文稿,现在只是第一张幻灯片是我想要弄清楚的。在这一点上也没有表格,但稍后会有幻灯片以相同的方式包含图表和其他值(我想学习如何使它与文本框一起工作也可以解决我的问题)。谢谢!

标签: excel vba powerpoint


【解决方案1】:

转到母版幻灯片视图并根据需要制作模板;喜欢特定的文本框和东西,然后从excel每次制作该模板的新幻灯片,并从单元格中的变量填充这些框。如果您只是学习编程,那比尝试通过代码添加文本框和所有内容要好。 for循环上的代码取决于您的演示幻灯片结构,如果您可以指定数据和格式,那就清楚了。 将此代码放入powerpoint VBA中,它可以让您访问excel中的数据,打开带有数据的excel表并在您将适当的内容放入循环后运行它。

Public Sub test()
Dim excelSht As Worksheet
Dim excelApp As Excel.Application
Set excelApp = GetObject(, "excel.application")
Set excelSht = excelApp.ActiveSheet
Dim path As String
With Application.FileDialog(msoFileDialogFolderPicker)
    .Show
    path = .SelectedItems(1)
End With
'Set rng = excelApp.Selection ' use this if you want to select the data in advance
Set rng = excelSht.Range("A2:A140") ' use this if your data range is fixed
For Each cel In rng
    For Each shp In Application.Presentations(1).Slides(1).Shapes
        If shp.Name Like "Title 1" Then shp.TextFrame.TextRange.Text = "Dear, " & cel.Value ' this one choose the name of the shape of which one you want to change the text.
    Next
    Application.Presentations(1).SaveAs (path & "\" & cel.Value & ".pptx")
Next
End Sub

【讨论】:

  • 这听起来是一种很棒的方法。你能帮我进一步吗?假设我已经制作了一些母版幻灯片。然后如何将其保存为模板并将其用于应用此解决方案的目的?所以想象一下所有页面都是不变的,我只是在正确的位置使用一个文本框将这个变量从单元格 A2 一直粘贴到 A140 (例如,我在这个问题中犯了一个错误,我现在要解决) .每一个都进入一个单独的PowerPoint文件,因为它们是为不同的收件人准备的。非常感谢!
  • 所以基本上你已经准备了一个PPT,但需要139个只有一个名字的PPT?其他一切都保持不变?还是您还需要从 excel 数据本身制作第一个 powerpoint?
  • 假设已经制作了一个 PowerPoint!因此,稍后根据其他单元格中的值,我还想在每个 powerpoints 中添加不同的东西。现在我已经准备好模板,1 张幻灯片的文本保持不变,只有 1 个文本框具有从 A2 到 A140 的不同变量。我如何将这些变量粘贴到不同的文件中,以便它们每个都包含一封基于 Excel 表的收件人的信?非常感谢您的帮助!
  • 我已经编辑了答案以包含示例代码,您可以修改要将数据插入到哪个文本框中。它会以不同的名称另存为文件到您选择的文件夹中,应该满足您的需要。
  • 非常感谢您的回复!我非常感激。这已经给了我一些非常酷的想法,并介绍了我不知道的重要概念和技巧。但是,不幸的是,有一个问题。你能帮我进一步吗?它说运行时错误'91':对象变量或未设置块变量;对于说 Set Rng = ... 的行可能是什么问题?我必须将文本框命名为 Title 1 才能正常工作?
猜你喜欢
  • 2014-10-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多