joyance 发表于 2017-2-7 19:19:29

如何利用VBA实现根据表格的人数生成对应的PPT的数量

附件有两个文件,一个参训人员,一个是PPT的模板。我希望能实现通过VBA简单操作。
一:根据参训人员的人数,生成对应数量的灯片。
二:每张灯片显示的名字就是参训人员的名字。
三:灯片上的名字跟参训人员名单的名字一一对应。
我是用来打印出人员名单作为桌牌用的。
如果成功的话,应该跟附件的图片这样。按顺序生成。

snower01 发表于 2017-2-7 22:05:50

送给你一个程序,试试吧!注意要引用,程序里介绍了方法。

[*]'VBE——引用——Microsoft excel 12.0 object library
[*]Private Sub CommandButton1_Click()
[*]   
[*]    Dim xlApp As Object
[*]    Dim xlwbk As Object      '定义工作薄对象
[*]    Dim xlsht As Object      '定义工作表对象
[*]    Dim fPath As String      '定义文件路径
[*]   
[*]    '打开对话框选择文件并获取文件路径
[*]    With Application.FileDialog(msoFileDialogFilePicker)
[*]      If .Show = False Then Exit Sub
[*]      fPath = .SelectedItems(1)
[*]    End With
[*]   
[*]    Set xlApp = CreateObject("Excel.Application")
[*]    Set xlwbk = xlApp.Workbooks.Open(fPath)
[*]    Set xlsht = xlwbk.Worksheets("入选名单")
[*]    lrow = xlsht.Range("b1").End(xlDown).Row
[*]   
[*]    For i = 1 To lrow - 1
[*]      'Set pptSlide = ActivePresentation.Slides.Add(Index:=i + 1, Layout:=ppLayoutBlank)
[*]      Set sld = ActivePresentation.Slides(i)
[*]      sld.Copy
[*]      ActiveWindow.View.Paste
[*]      
[*]      ActivePresentation.Slides(i + 1).Shapes("Text Box 2").TextFrame.TextRange.Text = xlsht.Cells(i + 2, 2).Value
[*]      ActivePresentation.Slides(i + 1).Shapes("Text Box 3").TextFrame.TextRange.Text = xlsht.Cells(i + 2, 2).Value
[*]    Next
[*]    ActivePresentation.Slides(ActivePresentation.Slides.Count).Delete
[*]    Set xlApp = Nothing
[*]    Set xlwbk = Nothing
[*]    Set xlsht = NothingEnd Sub

复制代码
学会了技术,也要报答需要的人!
页: [1]
查看完整版本: 如何利用VBA实现根据表格的人数生成对应的PPT的数量