ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel基础] [分享]轻松套打带照片的准考证

[复制链接]

TA的精华主题

TA的得分主题

发表于 2007-10-6 14:57 | 显示全部楼层 |阅读模式
Excel应用实例——轻松套打带照片的准考证
2007年09月29日 星期六 19:14

星期一刚上班,同事小张迎上来笑嘻嘻地说:“主任让你务必于今天上午将准考证打印出来,数据已录好了,照片已加入字段”。想起今年第11期F6版《中国电脑教育报》的一篇《自己动手制作学生胸卡》的文章,我想用VFP的报表功能实现带照片的准考证套打,应该是很轻松的事。

打开小张递过来的数据盘,原来数据全部用Excel录入,照片作为其中的一个字段已放在单元格内(如图1),如果用VFP,还需将工作表转换成DBF格式,并将照片复制成一个个单独的图片文件,好几百人的照片,没有几天的功夫怕是完成不了任务的。还是在Excel上想想办法吧,看有没有捷径可走。通过探索,笔者终于将此问题解决了,现将方法介绍如下。

1. 设计套打模板,建立数据关联
图2是空白准考证样式,先用扫描仪将准考证扫描,并保持大小尺寸不变,然后将图片保存为JPG格式。打开Sheet2工作表,将刚才保存的图片插入表中,并将图片设定为非打印对象。执行“视图→工具栏→绘图”命令,在准考证需填充文本的部位插入矩形框。我们用VLOOKUP函数实现Sheet1工作表中数据与Sheet2表中准考证间的关联(照片填充部分除外)。

首先将A21单元格作为查询的关键数值,在A20?G20单元格中分别输入[序号]、[姓名]、[级别]等字段。在B21单元格中输入公式“=IF(VLOOKUP(A21,Sheet1!A2:I1000,2)=0,"",VLOOKUP(A21,Sheet1!A2:I1000,2))”,在C21单元格中输入公式“=IF(VLOOKUP(A21,Sheet1!A2:I1000,6)=0,"",VLOOKUP(A21,Sheet1!A2:I1000,6))”,其他依此类推。这样就建立了准考证填充数据与Sheet1表间的关联。

下一步就是要建立数据与准考证相应矩形框的关联,以准考证中[姓名]字段为例,鼠标单击该矩形框,在编辑栏右侧输入“=”符号,然后用鼠标点击需要填入数据的B21单元格,这样矩形框就和B21单元格中的数据建立了联系。只要单元格数据变化,则矩形框数据也跟着变化,其他依此类推。这样,只要在A21单元格输入序号值,那么Sheet1表中相应序号行的数据就会在准考证模板中自动生成。上述工作完成后,按“Shift”键选中所有矩形框,设置矩形框格式,包括字体、大小、对齐、颜色和线条等,特别是选中无填充色和无线条色。

2. 定义名称,导入照片
通过VLOOKUP函数虽然建立了工作表1和准考证的联系,但要在准考证中自动生成照片则需要用到比较复杂的函数,采取定义名称的办法 。具体步骤如下:

(1)定义名称:执行“插入→名称→定义”命令,打开如图3所示“定义名称”对话框,将名称定义为“A”,在“引用位置”文本框中输入公式“=OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A),1)”,按下〔确定〕按钮返回。该公式建立了查询数据的动态地址。接着用同样方法,再定义另一个名叫“X”的名称,里面包括公式“=INDIRECT(ADDRESS(MATCH(Sheet2!$A$21,A,0),9,1,,"Sheet1"))”,该公式表示当动态地址栏为Sheet2表中A21单元格数值时,返回Sheet1表中第9列即照片所在列单元格内容。

(2)导入图片:选取sheet2工作表,执行“视图→工具栏→控件工具箱”命令,打开“控制工具箱”窗口。点击图像框或文字框按钮,在准考证需要填充照片的位置画出相同大小的图片框或文字框。选取文字框(图像框)后,将编辑栏中“=EMBED("Forms.TextBox.1",""”改成“=X”,如图4,这样只要A21单元格数值变化时,照片框中相应的照片就会发生变化。

3. 制作微调按钮,编写宏代码
为操作更加方便,可以制作微调按钮调节序号值。执行“视图→工具栏→窗体”,打开窗体对话框,点击微调项标志按钮,建立微调按钮,右击按钮,打开“设置控件格式”对话框,并与B19单元格建立链接,按下〔确定〕按钮。选中A21单元格,在编辑栏中输入“= B19”,此时点击微调按钮,就可自动调节B19和A21单元格序号值,对应的数据就会在模板中自动生成,效果如图5。接下来就是打印了。

执行“工具→宏→Visul Basic编辑器”命令,在Visul Basic编辑器中选择“插入→添加模块”,在代码窗口输入以下代码:

Sub 打印()

ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True

Call dy

End Sub

Sub dy()

Dim a%, b$, c$, abc$

a = Sheets("Sheet2").Cells(19, 2).Value

b = Sheets("Sheet2").Cells(19, 4).Value

(说明:a即B19单元格,是图5中打印第×页至第×页中的起始页,b即D19单元格,是终止页。)

If a < b Then

a = a + 1

Sheets("Sheet2").Cells(19, 2).Value = a

Call 打印

End If

End Sub

Private Sub CommandButton1_Click()

Call 打印

End Sub

输入完成后,保存关闭VBA编辑窗口返回工作表状态。同制作微调按钮一样,制作一个〔打印〕按钮,并指定刚才建立的“打印”宏。将A1:F13所在的单元格区域设定为打印区域,设定打印起止页,按下〔打印〕按钮即可打印了,也可点击微调按钮,查询到相应的打印内容,然后打印当前页。当然其中的图片及按钮不会打印出来。

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-10-6 16:37 | 显示全部楼层

一、题目:

   建立了一个学生档案,有设置好的查询界面工作表,有一个存放具体学生信息的工作表。学生学籍工作表中有每个学生的照片。要求在查询界面中选取指定的学生,就从学籍工作表中引用该学生的照片,显示在查询界面中。

按此在新窗口浏览图片

按此在新窗口浏览图片

分析:

    首先,我们可以用VLOOKUP或用INDEX+MATCH查在学籍档案工作表中返回该学生照片所在的位置,但如何引用照片呢??我们可以用EXCEL的摄影功能把单元格的图片取出来。这里我们也许可以借助这个功能。但图片还要根据选取的学生姓名不停改变。用什么方法能做到单元格的区域或一个单元格达到随机应变的效果呢?这时我们应该想到“定义名称”。

具体操作步履:

  第一步根据选取的学生姓名,定位在学籍档案工作表中的该学生的照片单元格。

      插入--名称-:PIC=INDIRECT("学籍档案!bx"&MATCH(查询!$D$8,学籍档案!$B:$B,0))

公式说明:

MATCH(查询!$D$8,学籍档案!$B:$B,0):根据提供的学生姓名(查询!$D$8)在学籍工作表中(学籍档案!$B:$B)查找该学生姓名所在的行数。

("学籍档案!bx"&:照片是在学籍档案工作表中的BX列。

INDIRECT(。。):由于用&连接的是一个字符串,而不是一个有效的引用,所以这里要INDIRECT函数转化一下

注:这个公式也可以用OFFSET+MATCH实现



按此在新窗口浏览图片

第二步:视图---工具栏---自定义--在自定义对话框的命令选项卡中的类别框中找到工具,在右边的列表中找到小照相机图形,点鼠标左键不松,把该按钮拖动到工具栏中.然后选取工作表的任一个单元格,点击一下工具栏中的小照相机图形,这时指针会变成一个小细黑十字.用拖动的方法可以在工作表中拖画一个图形.



按此在新窗口浏览图片

第三步:选取拖画出的图形,在编辑栏中输入=pic,再回车.一切就OK了



按此在新窗口浏览图片

TA的精华主题

TA的得分主题

 楼主| 发表于 2007-10-6 17:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-10-9 08:16 | 显示全部楼层

TA的精华主题

TA的得分主题

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

谢谢分享!

[em02]

TA的精华主题

TA的得分主题

发表于 2007-10-9 13:43 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-10-9 14:13 | 显示全部楼层

有点看不明白!!!我还是要多学习!!!

TA的精华主题

TA的得分主题

发表于 2007-10-10 10:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2007-10-10 12:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢楼主分享!

TA的精华主题

TA的得分主题

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

谢谢楼猪的分享,又学习到很多有用的技巧

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

本版积分规则

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

GMT+8, 2024-11-24 01:53 , Processed in 0.037394 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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