ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1285|回复: 8

[讨论] 循环打印表格与PDF实例,尚有小问题,请大神帮忙看看如何更改,或者有其他的方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-7 16:10 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 暮牧 于 2018-9-8 09:34 编辑

目前已经能实现一起打印了。问题是有的机子配置比较好,有的机子配置比较,配置差的机子调取PDF的时候会出现打印顺序错误。如图,如何实现在不同的机子都能正确的打印,并且时间最短。

  1. Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


  2. Private Sub CommandButton1_Click()


  3. For n = 1 To 5 Step 1

  4. Sheets(Array("Sheet1", "Sheet3")).Select
  5. Sheets("Sheet3").Activate
  6. ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True '打印Sheet1、Sheet2
  7. ShellExecute 0&, "print", ThisWorkbook.Path & "\1.PDF", vbNullString, vbNullString, 0
  8. ShellExecute 0&, "print", ThisWorkbook.Path & "\2.PDF", vbNullString, vbNullString, 0
  9. ShellExecute 0&, "print", ThisWorkbook.Path & "\3.PDF", vbNullString, vbNullString, 0
  10. ShellExecute 0&, "print", ThisWorkbook.Path & "\4.PDF", vbNullString, vbNullString, 0
  11. ShellExecute 0&, "print", ThisWorkbook.Path & "\5.PDF", vbNullString, vbNullString, 0
  12. ShellExecute 0&, "print", ThisWorkbook.Path & "\6.PDF", vbNullString, vbNullString, 0
  13. Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒,有的机子测试可以有的不行,加载的时间有长有短,如何
  14. 'MsgBox "我执行了第" & n & "遍"
  15. Next
  16. Sheets("Sheet2").Select
  17. End Sub
复制代码

错误的顺序

错误的顺序

正确的顺序

正确的顺序

测试.7z

1.61 MB, 下载次数: 1

测试表格

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 16:11 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
经常看帖,第一次发帖,紧张的等待中~

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 16:23 | 显示全部楼层
19.Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒,不会要把3秒改为10秒或者更大,有没有比较好的方法,如监测打印机完成该次循环中,然后在NEXT

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 17:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
大神,帖子别沉了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 17:15 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-9-7 17:38 | 显示全部楼层
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True '打印Sheet1、Sheet2

ShellExecute 0&, "print", ThisWorkbook.Path & "\1.PDF", vbNullString, vbNullString, 0
Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒

ShellExecute 0&, "print", ThisWorkbook.Path & "\2.PDF", vbNullString, vbNullString, 0
Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒

ShellExecute 0&, "print", ThisWorkbook.Path & "\3.PDF", vbNullString, vbNullString, 0
Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒

ShellExecute 0&, "print", ThisWorkbook.Path & "\4.PDF", vbNullString, vbNullString, 0
Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒

ShellExecute 0&, "print", ThisWorkbook.Path & "\5.PDF", vbNullString, vbNullString, 0
Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒

ShellExecute 0&, "print", ThisWorkbook.Path & "\6.PDF", vbNullString, vbNullString, 0
Application.Wait Now + TimeValue("00:00:03") '时间延迟3秒

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-7 17:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
zopey 发表于 2018-9-7 17:38
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True '打印Sheet1、Sheet2

ShellExecute 0& ...

终于有人回复了,太感谢了。


这种方法我也有想过,就是时间有浪费了。
而且如果不怕时间长的话,可以直接在3秒的基础 改成10秒、20秒

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-8 09:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-9-8 09:40 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-13 17:40 , Processed in 0.023234 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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