ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

   
EH云课堂-专业的职场技能充电站 Excel转在线管理系统,怎么做看这里 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 263|回复: 10

[求助] 多条记录正反打印的问题,求思路代码。谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-14 18:47 | 显示全部楼层 |阅读模式
本帖最后由 如果我是真的 于 2019-4-14 20:24 编辑

具体的情况,请看附件。谢谢。


“临时数据表”数据不固定,大约二千条左右。现在想要实现的是,当点击“打印数据”后,        
“临时数据表”的数据自动按次序,一条条的将数据导入到证书模板,执行打印。        
因为数据项目共10个,需要在一张纸上进行正反面打印,因为打印机不支持自动正反打印,        
所以我能想到的办法的过程是:导入第1条,打印“正面”,再导入第2条,打印“正面”,        
再导入第3条,……,所有的都导入并打印后,弹出提示窗口“正面已经打印,将纸张反转放入并继续”        
手工纸张反放后,点刚才提示窗口的“确定”,然后,自动导入第1条,打印“背面”,再导入        
第2条,打印“反面”,再导入第3条,……,再到所有的都打印完成。        
        
请问高手,这样的打印代码,怎么写?请问有其他的好的打印方案吗?        
        
问题描述的有些繁琐,请帮忙。        


请教测试.zip

26.82 KB, 下载次数: 17

TA的精华主题

TA的得分主题

发表于 2019-4-14 20:47 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-4-14 20:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2019-4-14 21:15 来自手机 | 显示全部楼层
本帖最后由 乐乐2006201505 于 2019-4-14 21:22 编辑

如果你打印机支持双面打印,找我求助的获取句柄帖子即可解决。
既然你的打印机不支持双面,就只能用你说的方法打印,这种代码网上搜一下,很多的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-14 21:45 | 显示全部楼层
乐乐2006201505 发表于 2019-4-14 21:15
如果你打印机支持双面打印,找我求助的获取句柄帖子即可解决。
既然你的打印机不支持双面,就只能用你说的 ...

看了一下你讲的那个贴子,我们打印机不支持双面打印。而且 ,帖子内容好深奥。


TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-14 21:46 | 显示全部楼层
闻启学 发表于 2019-4-14 20:49
你们打印机能否支持双面打印功能

我们打印机不支持双面打印。只能打印完一面,把纸张反放,再打印背面。

TA的精华主题

TA的得分主题

发表于 2019-4-14 23:51 | 显示全部楼层
本帖最后由 乐乐2006201505 于 2019-4-15 11:42 编辑

重新实测后上传代码。
修改红色代码中数字,就可以实现打印份数。
Sub 双面打印()
  On Error Resume Next
  Dim Pages As Integer, Ji As Integer, Ou As Integer
  With Sheets("临时数据表")
    r = .Cells(Rows.Count, 1).End(3).Row
    arr = .Range("a3:j" & r)
  End With
  Sheets("证书模板").Activate
  With Sheets("证书模板")
    For i = 2 To r
      .Range("e7") = arr(i, 8)
      .Range("d11") = arr(i, 2)
      .Range("f23") = arr(i, 9)
      .Range("f25") = arr(i, 7)
      .Range("f27") = arr(i, 3)
      .Range("i44") = arr(i, 6)
      If VBA.IsEmpty(.UsedRange) Then MsgBox "当前工作表为空!", 64, "出错": Exit Sub
      ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1, Collate _
          :=True, IgnorePrintAreas:=False
    Next i
  End With
  MsgBox "请将打印纸反向装入打印机中," & Chr(10) & "开始打印另一面!", 64, "友情提示"
  With Sheets("证书模板")
    For i = r To 2 Step -1
      .Range("s23") = arr(i, 5)
      .Range("s25") = arr(i, 4)
      .Range("s27") = arr(i, 10)
      .Range("v44") = arr(i, 1)
      If VBA.IsEmpty(.UsedRange) Then MsgBox "当前工作表为空!", 64, "出错": Exit Sub
      ActiveWindow.SelectedSheets.PrintOut From:=2, To:=2, Copies:=1, Collate _
          :=True, IgnorePrintAreas:=False
    Next i
  End With
End Sub

TA的精华主题

TA的得分主题

发表于 2019-4-15 07:19 来自手机 | 显示全部楼层
2000多张,一张一张打效率太低了,每100条生成一个word文件,再保存为PDF,可按奇偶逆序打印

TA的精华主题

TA的得分主题

发表于 2019-4-15 08:20 | 显示全部楼层
这样打印很快,用工具做的

word报表415817.zip

13.83 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-15 08:31 | 显示全部楼层
乐乐2006201505 发表于 2019-4-14 23:51
Sub 双面打印()
  On Error Resume Next
  Dim Pages As Integer, Ji As Integer, Ou As Integer

还没来得急测试。有两个疑问请教,一是无论打印正面还是反面,是不是应该先设置打印区域?代码中我没找到设置“打印区域”的部分?二是,打印速度问题,比如我们需要打印7份一页的文档,一种方法是连续点击七次打印,另一种方法是打开打印设置面,设置一次打印七份,相比较第二种是连续打印七份,第一种是一页一停顿,这段代码应该也是一页一停顿,效率低,有没有办法解决这个问题?
谢谢了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,每天学会一个新技能

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2019-6-19 15:09 , Processed in 0.116099 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2017 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

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