在 PowerPoint 中动态填充文本框

在 PowerPoint 中动态填充文本框

我需要制作大量幻灯片,所有幻灯片的布局和设计都相同,但几个文本框中的内容不同。到目前为止,我还没有找到非商业使用 csv/excel 数据填充 PowerPoint 元素的解决方案。商业插件(即https://www.presentationpoint.com/software/datapoint/) 对于我每年可能需要 1-2 次的功能来说,它的价格似乎过高。

谢谢

答案1

我找到了一个小宏,它可以帮你完成这项工作。我测试了它,它有效,但你必须在 ppt 中对宏进行一些设置。我的翻译并不完美,但我会尝试。

  1. 启用 Visual Basic:

通过转到文件选项菜单栏来启用 ppt 中的开发人员工具,勾选“开发人员工具”。单击确定退出。

  1. 获取 ppt 所需的 exelobjects:

转到新选项卡“开发人员工具”,选择“Visual Basic”,然后选择顶部的“Extras”,然后选择“查找”。找到并勾选“Microsoft Excel 14.0 对象库”或类似项。单击“确定”结束

  1. 为宏代码构建一个模块:

在“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 视图

  1. 建立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”

宏完成后,你可能需要重新排列以下顶部幻灯片,因为只有顶部幻灯片将用于进行复制和填充

  1. 在开发人员选项卡、宏、运行宏中运行宏

如果你了解宏的工作原理,并且有一点 vba 经验,你可以根据自己的特殊需要更改代码

希望我能帮上一点忙

忙字节

相关内容