ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 按模版生成桌签PDF

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-3 15:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
myassz 发表于 2023-2-3 15:42
老师的程序是按考场生成的,与我的需求不一样。

因数据库中每个考场人数最多30人,生成的页面打印出来 ...

有一个修改文件在审核中

TA的精华主题

TA的得分主题

发表于 2023-2-4 09:35 | 显示全部楼层
myassz 发表于 2023-2-3 15:42
老师的程序是按考场生成的,与我的需求不一样。

因数据库中每个考场人数最多30人,生成的页面打印出来 ...

看贴合需求不?

按座位号生成的PDF文件.zip (588.63 KB, 下载次数: 24)


全部代码截图

1.JPG
2.JPG

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-4 19:44 | 显示全部楼层

感谢!生成的页面大概是这个意思,但是不完全正确。排序和文件生成都是按“考点名称+考试时间”

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-4 19:50 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 myassz 于 2023-2-4 19:53 编辑
andysky 发表于 2023-2-3 08:45
用 E灵 可以瞬间生所有标签,然后直接打印即可。
以下为操作动画:

谢谢!你这是按考场生成在同一页的,我要实现的功能不是这样的,是同一考场的考生自上而下生成在A4纸的同一位置

TA的精华主题

TA的得分主题

发表于 2023-2-5 13:28 | 显示全部楼层

如何修改,谢谢。 按考场生成考试桌签.rar (23.99 KB, 下载次数: 9)

TA的精华主题

TA的得分主题

发表于 2023-2-9 20:02 | 显示全部楼层
myassz 发表于 2023-2-4 19:44
感谢!生成的页面大概是这个意思,但是不完全正确。排序和文件生成都是按“考点名称+考试时间”

代码1.JPG

代码2.JPG

TA的精华主题

TA的得分主题

发表于 2023-2-9 20:03 | 显示全部楼层
myassz 发表于 2023-2-4 19:44
感谢!生成的页面大概是这个意思,但是不完全正确。排序和文件生成都是按“考点名称+考试时间”

示例.JPG


代码自动生成的PDF文件.zip (1.2 MB, 下载次数: 19)


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-2-9 21:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请确认第27楼的文件是你要的最终的文件吗?

TA的精华主题

TA的得分主题

发表于 2023-2-9 21:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
hjd528 发表于 2023-2-5 13:28
如何修改,谢谢。
  1. Option Explicit

  2. Private Function Cnn() As Object
  3.     Set Cnn = CreateObject("adodb.connection")
  4.     If Application.Version < 12 Then
  5.         Cnn.Provider = "Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0"
  6.     Else
  7.         Cnn.Provider = "Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0"
  8.     End If
  9.     Cnn.Open ThisWorkbook.FullName
  10. End Function

  11. Sub 生成桌签()
  12.     Dim i&, n%, SQL$, Rst As Object

  13.     Dim Arr(1 To 30, 1 To 6), x%, y%, d As Object, k
  14.     Set d = CreateObject("Scripting.Dictionary")
  15.     Set Rst = CreateObject("adodb.Recordset")
  16.    
  17.     Rem 获取考场考场号
  18.     If Rst.State = 1 Then Rst.Close
  19.     Rst.Open "SELECT DISTINCT 考场号 FROM [考场库$]", Cnn, 1, 3
  20.     Do While Not Rst.EOF
  21.         d(Rst.Fields("考场号").Value) = ""
  22.         Rst.MoveNext
  23.     Loop
  24.    
  25.     Rem 开始编排生成文件
  26.     Sheets("桌签模版").Select
  27.     Application.ScreenUpdating = False
  28.     Application.DisplayAlerts = False
  29.     Range("A31:F65536").Clear

  30.     For Each k In d.keys    '按考场生成文件夹
  31.         If Rst.State = 1 Then Rst.Close
  32.         SQL = "SELECT * FROM [考场库$] WHERE 考场号='" & k & "' ORDER BY 座位号"
  33.         Rst.Open SQL, Cnn, 1, 3
  34.         If Rst.RecordCount > 30 Then
  35.             MsgBox k & "考场 人数为 " & Rst.RecordCount, vbCritical, "系统警告"
  36.             Exit Sub
  37.         End If
  38.         Rem 记录按5行6列写入数组
  39.         n = 0: x = 0: y = 1: Erase Arr
  40.         Do While Not Rst.EOF
  41.             n = n + 1
  42.             x = (((n - 1) Mod 5)) * 6 + 1
  43.             Arr(x + 1, y) = "座位号:" & Rst.Fields("座位号").Value
  44.             Arr(x + 2, y) = "姓名:" & Rst.Fields("姓名").Value
  45.             Arr(x + 3, y) = "班级:" & Rst.Fields("班级").Value
  46.             Arr(x + 4, y) = "准考证号:" & Rst.Fields("准考证号").Value
  47.             Rst.MoveNext
  48.             If n Mod 5 = 0 Then y = y + 1
  49.         Loop
  50.         Rem 输出到文件指定位置
  51.         Range("A1:F30") = Arr
  52.         With ActiveSheet.PageSetup '设置页脚
  53.             .LeftHeader = ""
  54.             .CenterHeader = k & " 考 场 学 生 信 息"
  55.             .RightHeader = ""
  56.             .LeftFooter = ""
  57.             .CenterFooter = ""
  58.             .RightFooter = ""
  59.         End With
  60.    
  61.         Rem 直接打印输出或保存为PDF文件,根据需要自行选择
  62.         'Range("A1:F30").PrintOut    '直接打印输出

  63.         Rem 另存为PDF文档
  64.         Sheets("桌签模版").Copy
  65.         ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=k & "考场学生信息.pdf", Quality:=xlQualityStandard, _
  66.             IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
  67.         ActiveWorkbook.Close False
  68.     Next
  69.    
  70.     Application.ScreenUpdating = True
  71.     Application.DisplayAlerts = True
  72.     Set d = Nothing
  73.     Set Rst = Nothing
  74. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2023-2-9 21:14 | 显示全部楼层
hjd528 发表于 2023-2-5 13:28
如何修改,谢谢。

按考场生成考试桌签_5行6列.zip (29.36 KB, 下载次数: 14)

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 18:55 , Processed in 0.036181 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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