Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3052|回复: 4

[已解决]批量打印

[复制链接]
发表于 2016-10-1 22:34 | 显示全部楼层 |阅读模式
求助,用Sheet2表格式,按各个《组名》分别批量打印

表.rar (27.2 KB, 下载次数: 7)
发表于 2016-10-2 10:45 | 显示全部楼层
看不出 有学习的迹象 ,
直接找人 有偿服务 就可以.
有的论坛 有这样的板块 ,
X宝 什么的 上面也有. (搜索 "excel "或者 加上 "Vba" )  
回复

使用道具 举报

发表于 2016-10-2 20:38 | 显示全部楼层    本楼为最佳答案   
先生成,再打印,再删除。
  1. Sub 按村组生成()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     arr = [a1].CurrentRegion
  4.     For i = 5 To UBound(arr)
  5.         zu = arr(i, 3)
  6.         If zu <> "" Then d(zu) = d(zu) & "," & i
  7.     Next
  8.    
  9.     Application.ScreenUpdating = False
  10.     rmax = 33 '每张表最大人数
  11.     For Each zu In d.keys
  12.         xrr = Split(d(zu), ",")
  13.         rs = UBound(xrr)    '组的人数
  14.         n = (rs - 0.1) \ rmax + 1
  15.         For pg = 1 To n
  16.             Sheets(2).Copy after:=Sheets(Sheets.Count)
  17.             With ActiveSheet
  18.                 .Name = zu & pg
  19.                 ReDim brr(1 To rmax, 1 To UBound(arr, 2))
  20.                 s = (pg - 1) * 33  '起始位置
  21.                 For r = 1 To rmax
  22.                     If r + s <= rs Then
  23.                         i = xrr(r + s)
  24.                         For j = 1 To UBound(arr, 2)
  25.                             brr(r, j) = arr(i, j)
  26.                         Next
  27.                     End If
  28.                 Next
  29.                 .[a5].Resize(rmax, UBound(brr, 2)) = brr
  30.             End With
  31.         Next
  32.     Next
  33.     Sheets(1).Activate
  34.     Application.ScreenUpdating = True
  35. End Sub

  36. Sub 清除()
  37.     Application.ScreenUpdating = False
  38.     Application.DisplayAlerts = False
  39.     For Each sh In Worksheets
  40.         If sh.Index > 2 Then sh.Delete
  41.     Next
  42.     Application.DisplayAlerts = True
  43.     Application.ScreenUpdating = True
  44. End Sub

  45. Sub 打印()
  46.     For Each sh In Worksheets
  47.         If sh.Index > 2 Then sh.PrintPreview
  48.         'If sh.Index > 2 Then sh.PrintOut
  49.     Next
  50. End Sub
复制代码

表.rar

39.4 KB, 下载次数: 14

回复

使用道具 举报

发表于 2016-10-2 20:39 | 显示全部楼层
调试中打印用了预览模式(代码第49行),实际使用中可注释掉第49行,用第50行。
回复

使用道具 举报

 楼主| 发表于 2016-10-3 08:07 | 显示全部楼层
grf1973 发表于 2016-10-2 20:38
先生成,再打印,再删除。

谢谢,真是学无止境,我只会搬运,学不会代码[em03]
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-18 11:20 , Processed in 0.390182 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表