ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 单据套打

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-6 18:25 | 显示全部楼层 |阅读模式
求助各位大神,销售发货单套打,如何实现客户的订单批量打印,双方确认用。



要求:
1、蓝色部分根据明细直接代入,LOGO根据LOGO列表自动代入图片
2、绿色部分根据代入的明细自动合计
3、要求行主要内容即从第8行开始,最多可以打印48行,余有2行为合计和大写列明,超过48行自动转至下页打印完成,如有超页再做换页同样的操作


谢谢

套打格式.rar

41.88 KB, 下载次数: 17

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-6 19:09 | 显示全部楼层
打印在A4纸上

TA的精华主题

TA的得分主题

发表于 2024-3-6 20:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub test()
    Set d = CreateObject("scripting.dictionary")
    arr = Sheets("明细").UsedRange
    crr = Array(1, 7, 4, 8, 7, 9, 8, 10, 10, 11, 12, 12, 13, 13, 14, 14)
    Application.ScreenUpdating = False
    Sheets("套打格式").Select
    For j = 2 To UBound(arr)
        d(arr(j, 1)) = d(arr(j, 1)) & "#" & j
    Next
    For Each k In d.keys
        brr = Split(d(k), "#")
        clear_pic
        Call addpic(k)
        x = Val(brr(1))
        [n2] = k
        [n3] = arr(x, 2)
        [c5] = arr(x, 3)
        [b6] = "地址电话:" & arr(x, 4)
        [k5] = "公司名称:" & arr(x, 5)
        [k6] = "地址电话:" & arr(x, 6)
        cont_clear
        For j = 1 To UBound(brr)
            r = (j - 1) Mod 30 + 8
            x = Val(brr(j))
            For i = 0 To UBound(crr) Step 2
                Cells(r, crr(i)) = arr(x, crr(i + 1))
            Next i
            If j Mod 30 = 0 Or j = UBound(brr) Then
                If r < 37 Then
                    Rows(r + 1 & ":" & 37).EntireRow.Hidden = True
                End If
                [a1:n41].PrintOut
                cont_clear
            End If
        Next j
    Next k
    Application.ScreenUpdating = True
End Sub
Sub add_cont(arr, brr, j, k)
    [n2] = k
    x = Val(brr(j))
    [c5] = arr(x, 3)
End Sub
Sub cont_clear()
    [a8:n37].ClearContents
    [a8:n37].EntireRow.Hidden = False
   
End Sub
Sub clear_pic()
    For Each shp In ActiveSheet.Shapes
        shp.Delete
    Next shp
End Sub
Sub addpic(k)
    For Each shp In Sheets("LOGO").Shapes
        yy = shp.TopLeftCell.Offset(0, -1).Value
        If yy = k Then
            shp.Copy
            ActiveSheet.Paste
            With Selection
                .Top = [b2].Top
                .Left = [b2].Left
                .Width = [b2].Width
                .Height = [b2:b3].Height
            End With
            [a4].Select
            Exit For
        End If
    Next shp
End Sub

TA的精华主题

TA的得分主题

发表于 2024-3-6 20:48 | 显示全部楼层
套打格式.zip (58.24 KB, 下载次数: 45)
具体楼主可以根据自己的需求再调整的

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-3-6 21:08 | 显示全部楼层
liulang0808 发表于 2024-3-6 20:47
Sub test()
    Set d = CreateObject("scripting.dictionary")
    arr = Sheets("明细").UsedRange

最近都没怎么来这里,一来就看到您的优秀作品。

点评

现在闲暇时间少了,回帖也少了  发表于 2024-3-6 21:26

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-7 09:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
能不能给在内容里加一个按键啊

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-3-7 09:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 anywhere99 于 2024-3-7 09:46 编辑

谢谢大神支持
还请帮忙:
1、增加设置套打的内容行数根据实际明细的行数,自动调节,如果超过48行就余下的转下页
2、引用的LOGO大小设置固定尺寸2cm*2cm
3、给文件内容加一个按键,方便操作

谢谢


TA的精华主题

TA的得分主题

发表于 2024-3-7 09:53 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-3-7 10:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 批量打印()
Application.ScreenUpdating = False
Set d = CreateObject("scripting.dictionary")
ar = Sheets("明细").[a1].CurrentRegion
For i = 2 To UBound(ar)
    If ar(i, 1) <> Empty Then
        If d(ar(i, 1)) = "" Then
            d(ar(i, 1)) = i
        Else
            d(ar(i, 1)) = d(ar(i, 1)) & "|" & i
        End If
    End If
Next i
rr = Array(1, 4, 7, 8, 10, 12, 13, 14)
For Each k In d.keys
    For Each shp In ActiveSheet.Shapes
        If shp.TopLeftCell.Column < 14 Then
            shp.Delete
        End If
    Next shp
    For Each shp In Sheets("LOGO").Shapes
        y = shp.TopLeftCell.Offset(0, -1).Value
        If y = k Then
            Sheets("LOGO").Select
            shp.Copy
            Sheets("套打格式").Activate
            Range("B2").Select
            ActiveSheet.Paste
            With Selection
                .Top = [b2].Top
                .Left = [b2].Left
                .Width = [b2].Width
                .Height = [b2:b3].Height
            End With
            [a4].Select
            Exit For
        End If
    Next shp
    [a8:n45].ClearContents
    [a8:n45].EntireRow.Hidden = False
    br = Split(d(k), "|")
    sl = UBound(br) + 1
    x = br(0)
    [n2] = k
    [n3] = ar(x, 2)
    [c5] = ar(x, 3)
    [b6] = "地址电话:" & ar(x, 4)
    [k5] = "公司名称:" & ar(x, 5)
    [k6] = "地址电话:" & ar(x, 6)
    If sl <= 38 Then
        m = 7
        For i = 0 To UBound(br)
            xh = br(i)
            If ar(xh, 1) <> "" Then
                m = m + 1
                For j = 7 To 14
                    lh = rr(j - 7)
                    Cells(m, lh) = ar(xh, j)
                Next j
            End If
        Next i
        If sl < 38 Then
            Rows(sl + 8 & ":45").EntireRow.Hidden = True
        End If
        [a1:n50].PrintOut
    ElseIf sl > 38 Then
        For i = 0 To UBound(br) Step 38
            [a8:n45].ClearContents
            [a8:n45].EntireRow.Hidden = False
            m = 7
            For s = i To i + 37
                If s <= UBound(br) Then
                    xh = br(s)
                    If ar(xh, 1) <> "" Then
                        m = m + 1
                        For j = 7 To 14
                            lh = rr(j - 7)
                            Cells(m, lh) = ar(xh, j)
                        Next j
                    End If
                End If
            Next s
            If m < 38 Then
                Rows(m + 1 & ":45").EntireRow.Hidden = True
            End If
            [a1:n50].PrintOut
        Next i
    End If
Next k
Application.ScreenUpdating = True
MsgBox "打印完毕!"
End Sub

TA的精华主题

TA的得分主题

发表于 2024-3-7 10:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
套打格式.rar (65.08 KB, 下载次数: 31)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 18:26 , Processed in 0.039153 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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