|
Excel中使用宏语言打印证件
关键词: Excel 宏打印证件
本单位需要打印一批职工持股证(数量超过10000份),全体人员的基础信息存于Excel文件中,如果为此编制一程序,则牵涉到数据存储、转换和打印控制等问题,所以决定直接使用Excel内置的宏语言VB和工作表来完成此项工作。
工作表的基础信息格式:
编号 |
单位 |
姓名 |
性别 |
年龄 |
身份证号 |
工作证号 |
出资额(元) |
1 |
处机关 |
刘平 |
男 |
22 |
130xx0xxxxxx223 |
145006 |
50,000 |
2 |
处机关 |
王张丽 |
男 |
45 |
15xx33xx05xxx14 |
154002 |
150,000 |
3 |
处机关 |
林晓 |
女 |
42 |
17xxx45xx30xx61 |
159008 |
50,000 |
持股证的格式:
此面内容不需要打印 |
姓名:___________性别:_____
身份证号:__________________
出资编号:_____________
工作证号:_____________
出资金额:_____________
( 股)
发证日期:2002 年 12 月 31 日 |
以下为具体操作步骤。
一、建一工作表,改名为“打印”,设计页面内容,使之可以套打出持股证的内容,为便于控制,适当合并单元格,把每一需要打印的内容放到单独的单元格中,见图1。

图1
二、建立宏语言。
1.在Excel中按“Alt+F11”组合键打开VB代码编辑视窗,如图2所示,如果没有左边的“工程资源管理器”,按“Ctrl+R”组合键可以调出。

图2
2.用菜单“插入”→“模块”功能,添加一模块,把下列代码粘贴到右边的代码窗中,代码中已经包括必要的注释内容。
'宏
'功能:把光标处的人员信息填充到“打印”工作表,并打印
'用法:1.把光标定位到需要打印的人员行的单元格
' 2.执行本宏。
Sub subSetPringInfo()
Dim oCell1, oCell2 '定义二变量
Dim iBH As Integer '编号
Dim iRow As Integer '正在打印人员的行号
Dim strSheet As String '人员信息的工作表名称
strSheet = "Sheet1" '人员基本信息在Sheet1工作表中,此处可以修改
'检查是否在人员基本信息工作表中执行此功能,如果是,则显示不能在此工作表中执行。
If ActiveSheet.Name <> strSheet Then
'不是在人员信息工作表中则弹出对话框。
MsgBox "请在人员基本信息工作表中执行此功能"
Exit Sub
End If
Do '循环开始
iRow = Selection.Row '行号,从当前选定的行开始打印
'读当前打印行的左边第一单元格内容 :编号
Set oCell1 = Worksheets(strSheet).Cells(iRow, 1)
'编号是数字的行需要打印
iBH = Val(oCell1.Value) '编号
If iBH >= 1 Then
'是编号
Set oCell2 = Worksheets("打印").Cells(3, 3)
oCell2.Value = iBH
'姓名
Set oCell1 = Worksheets(strSheet).Cells(iRow, 3)
Set oCell2 = Worksheets("打印").Cells(1, 2)
oCell2.Value = oCell1.Value
'性别
Set oCell1 = Worksheets(strSheet).Cells(iRow, 4)
Set oCell2 = Worksheets("打印").Cells(1, 5)
oCell2.Value = oCell1.Value
'身份证号
Set oCell1 = Worksheets(strSheet).Cells(iRow, 6)
Set oCell2 = Worksheets("打印").Cells(2, 3)
oCell2.Value = oCell1.Value
'工作证号
Set oCell1 = Worksheets(strSheet).Cells(iRow, 7)
Set oCell2 = Worksheets("打印").Cells(4, 3)
'金额
Set oCell1 = Worksheets(strSheet).Cells(iRow, 8)
Set oCell2 = Worksheets("打印").Cells(5, 3)
oCell2.Value = oCell1.Value
'股数
Set oCell2 = Worksheets("打印").Cells(6, 4)
oCell2.Value = oCell1.Value
'打印证件,"A1:E7" 为定义页面的打印范围
Worksheets("打印").Range("A1:E7").PrintOut
'打完一个证件后,询问是否打印下一个。
If MsgBox("继续打印下一人员?", vbDefaultButton1 + vbYesNo) <> vbYes Then
'中断打印
Exit Sub
End If
'为打印下一人员做准备
Set oCell1 = Worksheets(strSheet).Cells(iRow + 1, 1)
oCell1.Activate
Else
MsgBox "当前行不是人员信息,不能打印"
Exit Sub
End If
Loop
End Sub
3.保存文件,关闭VB代码编辑窗。
三、打印证件。
激活人员信息工作表(单击Sheet1),把光标定位到第一个需要打印的人员(任一列均可),按Alt+F8打开“宏”对话框(如图3),选择subSetPringInfo宏→“执行”,则开始打印相应的人员的证件。打印完成一个人员证件后,提示是否继续打印下一人员或终止打印。

图 3
经过这样的处理后,证件的打印工作变成了放置证件到打印机和按鼠标的简单工作,提高了工作效率,收到了很好的效果。
中铁建工集团 刁星伍 2002年5月 |
|