ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 按固定模板格式批量打印

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-7-11 10:11 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册


      实现要求:
     1.固定模板:因单据需在针式打印机上打印,纸张尺寸为241X279.4mm, 每张打印纸可打印3张入库单每张入库单最多6条记录,单据格式在左侧已设置好,刚好可以在联式纸上完美打印。
    2.批量打印方式:(以单元格K5到K6作为开始和结束)
       A.数据从工作表“数据库”中取数,按工作表“模板”中的单元格K5和K6来指定批量打印范围(可采取其他更好的办法);
       B.打印提示:
          (1).当前每个单号的数据记录条数暂没有超过6条记录,需要考虑有单号的数据记录条数超过固定格式6条记录的情况,如超过则记在下一单上(即第二张打印单上);
          (2).每张纸的打印以3张入库单模板并列做为一次打印输出,如此类推循环打印至结束号;
          (3).尽量不改变模板格式,只提取数据到黄色显示的单元格中。
       在此,先感谢各位老师的无私帮助,谢谢!

求助-入库单 .rar

25.99 KB, 下载次数: 29

TA的精华主题

TA的得分主题

发表于 2024-7-11 10:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
需要考虑的因素太多了,很繁琐,先留个记号吧

TA的精华主题

TA的得分主题

发表于 2024-7-11 12:08 | 显示全部楼层
感谢各位老师的无私帮助,难度不大,费时间

TA的精华主题

TA的得分主题

发表于 2024-7-11 14:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

发表于 2024-7-11 14:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
240711 142053.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 00:20 | 显示全部楼层

感谢老师的解答,已经可以使用了,非常感谢你无私的帮助!另外,我想将打印输出更换成:”批量打印时集成到一个PDF文件里“,要怎样增加代码呢,再次等待你的解答。。。。。。

TA的精华主题

TA的得分主题

发表于 2024-7-12 08:54 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
一次打印导一个PDF文件,这个简单。
多次打印、导出到同一个PDF文件,有些难。需要使用Adobe Acrobat的API。
百度AI给出了一个代码:
  1. Sub PrintToPDF()
  2.     Dim acroPDDoc As Acrobat.AcroPDDoc
  3.     Dim acroPDPage As Acrobat.AcroPDPage
  4.     Dim acroExchApp As Acrobat.AcroExchApp
  5.     Dim acroExchAVDoc As Acrobat.AcroExchAVDoc
  6.    
  7.     ' 创建Acrobat对象
  8.     Set acroExchApp = CreateObject("AcroExch.App")
  9.     Set acroExchAVDoc = CreateObject("AcroExch.AVDoc")
  10.    
  11.     ' 创建一个新的PDDoc对象
  12.     Set acroPDDoc = CreateObject("AcroExch.PDDoc")
  13.     acroPDDoc.Create
  14.    
  15.     ' 假设您有一个Excel工作表的数据要打印
  16.     Dim i As Integer
  17.     For i = 1 To 5 ' 假设您要打印5次
  18.         ' 这里添加代码以准备数据并将其添加到PDDoc中
  19.         ' 例如,可以使用Acrobat的API函数CreatePage()和OpenPage()
  20.         ' 这里省略具体的数据添加过程
  21.         
  22.         ' 打印当前页
  23.         Set acroPDPage = acroPDDoc.OpenPage(0)
  24.         ' 使用适当的打印机设置,这里假设是"PDFPrinter"
  25.         ' 您可能需要根据实际情况修改打印机名称
  26.         acroPDPage.Print "PDFPrinter", True ' True 表示直接将输出发送到PDF
  27.         acroPDDoc.ClosePage(acroPDPage)
  28.     Next i
  29.    
  30.     ' 保存PDF文件
  31.     Dim outputPath As String
  32.     outputPath = "C:\path\to\your\output.pdf" ' 请替换为实际路径
  33.     acroPDDoc.Save(1, outputPath) ' 1 表示直接保存为PDF
  34.    
  35.     ' 清理对象
  36.     Set acroPDPage = Nothing
  37.     acroPDDoc.Close(1) ' 1 表示正常关闭
  38.     Set acroPDDoc = Nothing
  39.     Set acroExchAVDoc = Nothing
  40.     Set acroExchApp = Nothing
  41.    
  42.     MsgBox "PDF文件已生成: " & outputPath
  43. End Sub
复制代码


没有这个API,也没测试过上述代码。仅供参考。

TA的精华主题

TA的得分主题

发表于 2024-7-12 09:41 | 显示全部楼层
我尝试写了一个纯数组版的,没有使用字典,调试通过。
然后研究了一下4楼使用字典的代码,大体思路一致,算是殊途同归。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 10:35 | 显示全部楼层
边缘码农 发表于 2024-7-12 08:54
一次打印导一个PDF文件,这个简单。
多次打印、导出到同一个PDF文件,有些难。需要使用Adobe Acrobat的API ...

感谢你给的代码 ,测试没有通过,提示为”用户定义类型未定义“,不知要怎样修改,希望能给出修改的方法,非常感谢你.......如新的代码测试通过,我会将文档重新上传以便后续人员都能够学习和使用。。。
1720751410921.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-7-12 10:38 | 显示全部楼层
边缘码农 发表于 2024-7-12 09:41
我尝试写了一个纯数组版的,没有使用字典,调试通过。
然后研究了一下4楼使用字典的代码,大体思路一致, ...

期待老师您能将您所写的代码上传分享,同意的话我将一并写入文档中上传给大家一起分享,谢谢.....
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-18 12:19 , Processed in 0.044204 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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