我需要制作大量幻灯片,所有幻灯片的布局和设计都相同,但几个文本框中的内容不同。到目前为止,我还没有找到非商业使用 csv/excel 数据填充 PowerPoint 元素的解决方案。商业插件(即https://www.presentationpoint.com/software/datapoint/) 对于我每年可能需要 1-2 次的功能来说,它的价格似乎过高。
谢谢
答案1
我找到了一个小宏,它可以帮你完成这项工作。我测试了它,它有效,但你必须在 ppt 中对宏进行一些设置。我的翻译并不完美,但我会尝试。
- 启用 Visual Basic:
通过转到文件选项菜单栏来启用 ppt 中的开发人员工具,勾选“开发人员工具”。单击确定退出。
- 获取 ppt 所需的 exelobjects:
转到新选项卡“开发人员工具”,选择“Visual Basic”,然后选择顶部的“Extras”,然后选择“查找”。找到并勾选“Microsoft Excel 14.0 对象库”或类似项。单击“确定”结束
- 为宏代码构建一个模块:
在“project-explorer”的第一行上单击鼠标右键,选择“vba-project(myproject)”,选择插入,模块
将宏代码粘贴到中间的新代码窗口中
Sub CreateSlides()
'*** Original Sourcecode taken from http://superuser.com/questions/323408/excel-data-into-powerpoint-slides ***
'Open the Excel workbook. Change the filename here.
Dim OWB As New Excel.Workbook
Set OWB = Excel.Application.Workbooks.Open("C:\Tmp\List1.xlsx")
'Grab the first Worksheet in the Workbook
Dim WS As Excel.Worksheet
Dim sCurrentText As String
Dim sIdentifier As String
Dim oSl As Slide
Dim oSh As Shape
Set WS = OWB.Worksheets(1)
Dim i As Long
'Loop through each used row in Column A
For i = 3 To WS.Range("A65536").End(xlUp).Row
Debug.Print "Bin hier"
'Copy the first slide and paste at the end of the presentation
ActivePresentation.Slides(1).Copy
ActivePresentation.Slides.Paste
Set oSl = ActivePresentation.Slides(ActivePresentation.Slides.Count)
For c = 1 To 3
sCurrentText = WS.Cells(i, c).Value
sIdentifier = WS.Cells(2, c).Value
' find each shape with sIdentifier of the current column (e.g. "field1~", "field2~", and so on) in text, replace it with value from worksheet
For Each oSh In oSl.Shapes
' Make sure the shape can hold text and if is, that it IS holding text
If oSh.HasTextFrame Then
If oSh.TextFrame.HasText Then
' it's got text, do the replace
With oSh.TextFrame.TextRange
.Replace sIdentifier, sCurrentText
End With
End If
End If
Next
Next
Next
ActiveWorkbook.Close
End Sub
单击左上角的符号或按 alt+f11 返回默认 ppt 视图
- 建立exelsheet:
建立一个具有 1-3 列(用于 1-3 个文本字段)的 Excel 表,并以与宏中相同的名称和文件夹存储。fe“C:\Tmp\List1.xlsx”
第一行未使用
第二行将依赖的文本字段的默认文本命名为“field1”
接下来的几行应该包含每张后续幻灯片的文本
结构如下:
not used not used
field1 field2
mytextforbox1slide1 mytextforbox2slide1
mytextforbox1slide2 mytextforbox2slide2
....
5.建立ppt:
在第一张幻灯片中插入一个 texfield,并在其中写入“field1”
插入第二个文本框并在其中写入“field2”
宏完成后,你可能需要重新排列以下顶部幻灯片,因为只有顶部幻灯片将用于进行复制和填充
- 在开发人员选项卡、宏、运行宏中运行宏
如果你了解宏的工作原理,并且有一点 vba 经验,你可以根据自己的特殊需要更改代码
希望我能帮上一点忙
忙字节