...欢迎光临firelong在线,正在建设...
网站导航:首页,资料库,工具,Office宏,网页计算,防火墙,其他
当前位置:Excel宏>使用宏语言打印证件>
 

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

  二、建立宏语言。

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

1

图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宏→“执行”,则开始打印相应的人员的证件。打印完成一个人员证件后,提示是否继续打印下一人员或终止打印。

1

图 3

  经过这样的处理后,证件的打印工作变成了放置证件到打印机和按鼠标的简单工作,提高了工作效率,收到了很好的效果。

中铁建工集团 刁星伍 2002年5月