找回密码
 立即注册
搜索

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

1
回复
650
查看
[复制链接]

3

主题

7

帖子

16

幻币

江湖少侠

Rank: 2

积分
131
QQ
2017-2-7 19:19:29 显示全部楼层 |阅读模式
附件有两个文件,一个参训人员,一个是PPT的模板。我希望能实现通过VBA简单操作。
一:根据参训人员的人数,生成对应数量的灯片。
二:每张灯片显示的名字就是参训人员的名字。
三:灯片上的名字跟参训人员名单的名字一一对应。
我是用来打印出人员名单作为桌牌用的。
如果成功的话,应该跟附件的图片这样。按顺序生成。
PPT学习论坛
回复

使用道具 举报

3

主题

8

帖子

105

幻币

一流武者

Rank: 3Rank: 3

积分
327
QQ
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

复制代码
学会了技术,也要报答需要的人!
PPT学习论坛
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册