ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: shear120

[求助] Excel求助批量导入固定模板实现批量打印(分页打印)的方法

[复制链接]

TA的精华主题

TA的得分主题

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

这么少的代码就完成问题了,真厉害 可惜看不懂

TA的精华主题

TA的得分主题

发表于 2021-6-30 10:23 | 显示全部楼层
本帖最后由 sunman001 于 2021-6-30 10:25 编辑

老师好,我这里有一个类似的打印问题,但是我的数据表数据存在分组和分级关系,麻烦您帮我看一下,能不能在模板中实现分级分组打印

工程费用及结算汇总表.rar

32.21 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2021-6-30 11:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sunman001 发表于 2021-6-30 10:23
老师好,我这里有一个类似的打印问题,但是我的数据表数据存在分组和分级关系,麻烦您帮我看一下,能不能 ...

你举的例子是1.6的,1.1、1.2、1.3、1.4、1.5的打印吗?1.9的下面共有两级怎么打印?

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-6-30 11:29 | 显示全部楼层
本帖最后由 sunman001 于 2021-6-30 15:36 编辑
chxw68 发表于 2021-6-30 11:08
你举的例子是1.6的,1.1、1.2、1.3、1.4、1.5的打印吗?1.9的下面共有两级怎么打印?

谢谢老师关心,1.1 1.2 1.3 ……都要打印,均打印底层两级。我又检查了一下我的附件,对自己失误进行了修改。麻烦老师了

工程费用及结算汇总表.rar

31.85 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2021-7-2 09:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
chxw68 发表于 2021-6-30 11:08
你举的例子是1.6的,1.1、1.2、1.3、1.4、1.5的打印吗?1.9的下面共有两级怎么打印?

老师好,我这个文档有救吗

TA的精华主题

TA的得分主题

发表于 2021-7-2 10:59 | 显示全部楼层
  1. Sub tqsj()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim lk(1 To 4) As Double
  5.   Dim rng As Range
  6.   Dim d As Object
  7.   Application.ScreenUpdating = False
  8.   Application.DisplayAlerts = False
  9.   Set d = CreateObject("scripting.dictionary")
  10.   Set d1 = CreateObject("scripting.dictionary")
  11.   With Worksheets("单项工程费用数据表")
  12.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  13.     arr = .Range("a2:d" & r)
  14.   End With
  15.   For i = 1 To UBound(arr) - 1
  16.     Set d(arr(i, 1)) = CreateObject("scripting.dictionary")
  17.     d(arr(i, 1))(i) = Empty
  18.     For j = i + 1 To UBound(arr)
  19.       If arr(j, 1) Like arr(i, 1) & ".*" Then
  20.         Exit For
  21.       End If
  22.     Next
  23.     If j > UBound(arr) Then
  24.       If InStr(arr(i, 1), ".") <> 0 Then
  25.         xm = Left(arr(i, 1), InStrRev(arr(i, 1), ".") - 1)
  26.         If Not d.exists(xm) Then
  27.           Set d(xm) = CreateObject("scripting.dictionary")
  28.         End If
  29.         d(xm)(i) = Empty
  30.       End If
  31.     End If
  32.   Next
  33.   kk = d.keys
  34.   For k = 0 To UBound(kk)
  35.     aa = kk(k)
  36.     If d(aa).Count = 1 Then
  37.       d.Remove (aa)
  38.     End If
  39.   Next
  40.   For Each aa In d.keys
  41.     Debug.Print aa, d(aa).Count
  42.     ReDim brr(1 To d(aa).Count, 1 To 4)
  43.     m = 0
  44.     For Each bb In d(aa).keys
  45.       m = m + 1
  46.       brr(m, 1) = m
  47.       brr(m, 2) = arr(bb, 2)
  48.       brr(m, 3) = arr(bb, 3)
  49.     Next
  50.     d(aa) = brr
  51.   Next
  52.   With Worksheets("结果")
  53.     .Cells.Clear
  54.     .DisplayPageBreaks = False
  55.   End With
  56.   m = 1
  57.   With Worksheets("结算打印模板")
  58.     .Cells.PageBreak = xlPageBreakNone
  59.     For j = 1 To UBound(lk)
  60.       lk(j) = .Columns(j).ColumnWidth
  61.     Next
  62.     For Each aa In d.keys
  63.       brr = d(aa)
  64.       Set rng = .Columns("a:b").Find(what:="结算总价(小写)", LookIn:=xlValues, lookat:=1, searchorder:=xlByRows, searchdirection:=xlPrevious)
  65.       If rng Is Nothing Then
  66.         MsgBox "结算打印模板有错误!"
  67.         Exit Sub
  68.       End If
  69.       .Rows("4:" & rng.Row - 1).Delete
  70.       .Rows(4).Resize(UBound(brr)).Insert
  71.       .Range("a4").Resize(UBound(brr), UBound(brr, 2)) = brr
  72.       .Range("a1:d" & 3 + UBound(brr) + 7).Copy Worksheets("结果").Cells(m, 1)
  73.       .Cells(3 + UBound(brr) + 1, 3).Value = brr(1, 3)
  74.       With Worksheets("结果")
  75.         .Rows(m).RowHeight = 31.83
  76.         .Rows(m + 1).Resize(2 + UBound(brr) + 2 + 1).RowHeight = 20
  77.         .Rows(m + 2 + UBound(brr) + 3 + 1).Resize(4).RowHeight = 30
  78.         m = m + 3 + UBound(brr) + 7 + 1
  79.         .HPageBreaks.Add Before:=.Rows(m)
  80.       End With
  81.     Next
  82.   End With
  83.   With Worksheets("结果")
  84.     For j = 1 To UBound(lk)
  85.       .Columns(j).ColumnWidth = lk(j)
  86.     Next
  87.   End With
  88. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-7-2 11:01 | 显示全部楼层
问题比较复杂,代码仅供参考。

工程费用及结算汇总表.rar

60.51 KB, 下载次数: 86

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2021-7-2 11:41 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-7-2 11:43 | 显示全部楼层
chxw68 发表于 2021-7-2 11:01
问题比较复杂,代码仅供参考。

嗯嗯,好的,我觉得没有比这样更好的了,谢谢老师

TA的精华主题

TA的得分主题

发表于 2021-7-2 12:05 | 显示全部楼层
chxw68 发表于 2021-7-2 11:01
问题比较复杂,代码仅供参考。

老师,对我来说公式太复杂了,以至于自己没办法理解修改,只能慢慢消化了。在“结算总价(小写)”对应的数据栏可以自模板提取到求和公式吗?提取对应底层两级,但是这两个层级中,较高一级的只要提取一个标题就可以了,“结算书”设为固定的尾部文本,辛苦老师再修改一下,万分感谢!!!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-3 07:23 , Processed in 0.040937 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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