ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 批量打印数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-18 16:52 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
模板工作表为套打的模版
1、根据数据工作表中的单据号产生销售出库单
2、一张出库单模版最多可以打印13行,对于一个单据号超过13行的需要增加第二张一张出库单 第二张单据右边显示2/2(意思就是共2张,此份为第2张),超过26行的需要增加第三张,以此类推。


原来的宏代码对数据量比较大运行就比较慢,原来代码是否可以优化。

2212销售出库单模版.rar

50.71 KB, 下载次数: 19

TA的精华主题

TA的得分主题

发表于 2024-6-18 17:19 | 显示全部楼层
目前的diam直接操作单元格肯定慢,但是要修改目前的代码几乎是不可能的,先留个记号吧

TA的精华主题

TA的得分主题

发表于 2024-6-18 20:21 | 显示全部楼层
万能批量软件用于楼主的案例

软件简介:   
     真正的软件级别,VBA通用软件,用于批量打印、拆分,用于特殊需求的录入、打印等等。不需改代码,就可以万能套用。复杂的数据引用、格式要求都能简单解决。
      单个、少量、批量操作(打印、拆分等)或者选择性操作都一样方便。
      核心很简单,就是用“=”号引用对应数据列,并作简单设置,一学就会,很容易套用到工作中遇到的实际案例。
       界面超级简单,千篇一律,傻瓜式操作。
      每个案例都仅是此软件的一个小应用,学会一个案例作参考就能一里通百里用,欢迎大家测试使用,更期待能提出宝贵意见。
     软件免费,并附简易教程,需要做简单设计才能吻合到实际案例。也可以联系作者提供设计服务,能为你提供完美的整体解决方案。
      文件就是软件!!!

销售出库单.jpg

aa.rar

643.17 KB, 下载次数: 11

TA的精华主题

TA的得分主题

发表于 2024-6-19 08:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

TA的精华主题

TA的得分主题

发表于 2024-6-19 09:35 | 显示全部楼层
Sub 销售单()
Application.ScreenUpdating = False
Dim ar As Variant
Dim rn As Range
Dim d As Object
Dim br()
Set d = CreateObject("scripting.dictionary")
With Sheets("数据")
    r = .Cells(Rows.Count, 1).End(xlUp).Row
    If r < 2 Then MsgBox "数据为空!": End
    ar = .Range("a1:x" & r)
End With
For i = 2 To UBound(ar)
    If ar(i, 1) <> "" Then
        If Not d.exists(ar(i, 1)) Then Set d(ar(i, 1)) = CreateObject("scripting.dictionary")
        d(ar(i, 1))(i) = ""
    End If
Next i
Set rn = Sheets("模板").Rows("1:22")
With Sheets("结果")
    .UsedRange.Clear
    m = 1
    For Each k In d.keys
        n = 0
        ReDim br(1 To UBound(ar), 1 To 29)
        For Each kk In d(k).keys
            n = n + 1
            br(n, 1) = n
            br(n, 2) = ar(kk, 10)
            br(n, 7) = ar(kk, 11)
            br(n, 17) = ar(kk, 12)
            br(n, 19) = ar(kk, 13)
            br(n, 22) = ar(kk, 14)
            br(n, 25) = ar(kk, 15)
            br(n, 28) = ar(kk, 16)
            br(n, 29) = ar(kk, 17)
            kh = ar(kk, 3)
            rq = ar(kk, 8)
        Next kk
        If n <= 13 Then
            rn.Copy .Cells(m, 1)
            .Cells(m + 3, 3) = k
            .Cells(m + 3, 10) = kh
            .Cells(m + 3, 24) = rq
            .Cells(m + 5, 1).Resize(n, UBound(br, 2)) = br
            m = m + 22
        Else
            ss = 0
            If n / 13 = Int(n / 13) Then
                sl = n / 13
            Else
                sl = Int(n / 13) + 1
            End If
            For i = 1 To n Step 13
                ss = ss + 1
                rn.Copy .Cells(m, 1)
                .Cells(m + 3, 3) = k
                .Cells(m + 3, 10) = kh
                .Cells(m + 3, 24) = rq
                .Cells(m + 1, 30) = ss & " / " & sl
                tt = m + 4
                For s = i To i + 12
                    If s <= n Then
                        tt = tt + 1
                        For j = 1 To UBound(br, 2)
                            .Cells(tt, j) = br(s, j)
                        Next j
                    End If
                Next s
                m = m + 22
            Next i
        End If
    Next k
End With
Application.ScreenUpdating = True
MsgBox "ok!"
End Sub

TA的精华主题

TA的得分主题

发表于 2024-6-19 09:37 | 显示全部楼层
2212销售出库单模版.rar (228.38 KB, 下载次数: 24)

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-19 17:49 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-6-19 18:01 来自手机 | 显示全部楼层
用一个一点记录同一个单据的行数,每满13就创建一页。

TA的精华主题

TA的得分主题

发表于 2024-6-19 21:06 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
哈哈哈哈哈哈  我来练个手  从此彻底无忧
240619 210554.gif

TA的精华主题

TA的得分主题

发表于 2024-6-26 19:40 | 显示全部楼层


感谢这位网友的支持与肯定,代码如下:
  1. Sub InsertSheet(m&)
  2.     Sheet2.Range("A1:AE22").Copy Sheet4.Range("A" & ReturnRow(m))
  3. End Sub

  4. Function ReturnRow(m&)
  5.     ReturnRow = (m - 1) * 22 + 1
  6. End Function

  7. Sub byWanao()
  8.     Dim i&, j&, k&, m&, n&, rNum&
  9.     Dim Dic As Object, arr, brr, crr(1 To 100)
  10.     Application.ScreenUpdating = False
  11.     Set Dic = CreateObject("Scripting.Dictionary")
  12.     arr = Sheet3.Range("A1").CurrentRegion
  13.     For i = 2 To UBound(arr)
  14.         If Not Dic.exists(arr(i, 1)) Then
  15.             n = 1
  16.             k = k + 1
  17.             crr(k) = 1
  18.             Dic(arr(i, 1)) = k
  19.             InsertSheet k
  20.             m = k
  21.         Else
  22.             m = Dic(arr(i, 1))
  23.             If crr(m) >= 13 Then
  24.                 n = n + 1
  25.                 crr(m) = 13
  26.                 k = k + 1
  27.                 Dic(arr(i, 1)) = k
  28.                 InsertSheet k
  29.                 m = k
  30.                 For j = 1 To n
  31.                     Sheet4.Cells(ReturnRow(m - n + j) + 1, 30) = j & "/" & n
  32.                 Next
  33.             End If
  34.             crr(m) = crr(m) + 1
  35.         End If
  36.         
  37.         rNum = ReturnRow(m)
  38.         With Sheet4
  39.             .Cells(rNum + 3, 1) = "单 据 号:" & arr(i, 1)
  40.             .Cells(rNum + 3, 8) = "客 户:" & arr(i, 3)
  41.             .Cells(rNum + 3, 23) = "日 期:" & arr(i, 8)
  42.             .Cells(rNum + crr(m) + 4, 2) = arr(i, 10)
  43.             .Cells(rNum + crr(m) + 4, 7) = arr(i, 11)
  44.             .Cells(rNum + crr(m) + 4, 17) = arr(i, 12)
  45.             .Cells(rNum + crr(m) + 4, 19) = arr(i, 13)
  46.         End With
  47.     Next
  48.     Application.ScreenUpdating = True
  49. End Sub
复制代码
附件:
2212销售出库单模版.rar (71.19 KB, 下载次数: 9)

代码写的充忙,还没优化。
我用的是你隐藏的那个表格。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-28 05:53 , Processed in 0.038230 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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