用Printer自制表格的分栏打印

'******************************************************************************************************
'功能:用Printer自制的表格的分栏打印
'调用:MyPrint(12, 1000),pw:定义某个刻度下的表格宽度
'参数:Nz:脊背的总个数
'作者: FlashAsp
'Q Q: 21792038
'日期: 2007-04-12
'******************************************************************************************************

Public Sub MyPrint(Nz As Integer, pw As Integer)
    On Error Resume Next
    Dim MyStep, Steps, ps, h, np As Integer
    Printer.PaperSize = vbPRPSA4 'vbPRPSA4=210mm*297mm
    Printer.Orientation = 1 '    定义纸张为纵向打印1纵,2横
    BackColor = QBColor(7)
    Printer.Width = 11500 'A4纸56.7*210mm
    Printer.Height = 15800 '定义打印纸高度56.7*297mm
    Steps = pw + 100 '定义每个表格循环的步长
    np = Round(11500 / Steps)   '计算每页纸可以打印脊背的个数
    ph = 15000 '定义表格高度
    h = ph / 6 '定义5个内表格的高度
    np = np - 1
    k = 0 '统计循环个数
    Percent = Round((pw / 1000)) '计算百分比
    '计算分页的数量
    If Nz Mod np = 0 Then
        ps = Round(Nz / np)
    Else
        ps = Round(Nz / np) + 1
    End If
 
    For j = 1 To ps
       '开始画大表格
      
       For i = 0 To np Step 1
            k = k + 1
            MyStep = Steps * i
            'V画第一条主横线
            Printer.Line (MyStep, 0)-(MyStep + pw, 0)
           
            '在第1条主横线和第2条割线之间打印档号
            Printer.CurrentX = Steps * i + 100 * Percent
            Printer.CurrentY = 450
            Printer.FontName = "黑体"
            Printer.FontSize = 12
            Printer.Print "档号"
           
            '在第2条割线与第3条割线之间打印档号对应的变量
            Printer.CurrentX = Steps * i + 100 * Percent
            Printer.CurrentY = 0.6 * h
            Printer.FontName = "黑体"
            Printer.FontSize = 10
            Call CutPrint("00001-000002-0000003-00000004-000000005", Printer.CurrentX, 350, Printer.CurrentY, 250, "-", "V")
        
           
             '在第3条主横线和第4条割线之间打印总登记号
            Printer.CurrentX = Steps * i + 100 * Percent
            Printer.CurrentY = 2.2 * h
            Printer.FontName = "黑体"
            Printer.FontSize = 12
            Printer.Print "总登记号"
           
            '在第4条割线与第5条割线之间打印总登记号对应的变量
            Printer.CurrentX = Steps * i + 100 * Percent
            Printer.CurrentY = 2.8 * h
            Printer.FontName = "黑体"
            Printer.FontSize = 10
            Printer.Print "001001002"
           
             '在第5条主横线和第6条割线之间第二条主横线打印案卷题名
            Printer.CurrentX = Steps * i + 150 * Percent
            Printer.CurrentY = 3.4 * h
            Printer.FontName = "黑体"
            Printer.FontSize = 12
            Printer.Print "案卷题名"
           
            '在第6条割线与第第二条主横线之间打印第二条主横线打印案卷题名对应的变量
            Printer.CurrentX = Steps * i + 150 * Percent
            Printer.CurrentY = 3.8 * h + 400
            Printer.FontName = "黑体"
            Printer.FontSize = 12
             If pw = 1134 Then
            Call CutPrint("湖南省张家界市慈利县东岳镇广东村香港岛,湖南省张家界市慈利县东岳镇广东村香港岛,湖南省张家界市慈利县东岳镇广东村香港岛", Printer.CurrentX, 350, Printer.CurrentY, 250, ",", "H")
            Else
            Call CutPrint("湖南省张家界市慈利县东岳镇广东村香港岛,湖南省张家界市慈利县东岳镇广东村香港岛,湖南省张家界市慈利县东岳镇广东村香港岛", Printer.CurrentX, 500, Printer.CurrentY, 250, ",", "H")
            End If

           '+++++++++++++++++++++++++++++++
            '在第一条主横线和第二条主横线之间再画5条分割线
            Printer.Line (MyStep, 0.5 * h)-(MyStep + pw, 0.5 * h)
            Printer.Line (MyStep, 2 * h)-(MyStep + pw, 2 * h)
            Printer.Line (MyStep, 2.5 * h)-(MyStep + pw, 2.5 * h)
            Printer.Line (MyStep, 3.2 * h)-(MyStep + pw, 3.2 * h)
            Printer.Line (MyStep, 3.8 * h)-(MyStep + pw, 3.8 * h)
            'V画第二条主横线
            Printer.Line (MyStep, ph)-(MyStep + pw, ph)
            'H画第一条竖线
            Printer.Line (MyStep, 0)-(MyStep, ph)
            'H画第二条竖线
            Printer.Line (MyStep + pw, 0)-(MyStep + pw, ph)
           
            If k = Nz Then Exit For '当循环个数等于脊背数量时退出FOR
        Next
        If k = Nz Then Exit For '当循环个数等于脊背数量时退出FOR
        Printer.NewPage '换页
    Next
          Printer.EndDoc
End Sub

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值