怎样用excel打印工资条,即每个人都带有列头

解决方案 »

  1.   

    打印设置里可以设置页面的Title,然后每一页都会自动加上
      

  2.   

    录制一个宏,让excel自己做。
      

  3.   

    我是将表格控件vsflexgrid中的数据导入excel,在excel中想办法变成工资条的形式
    形式如下:
    姓名     性别     部门    工资
    张了      男      业务部  600姓名     性别     部门    工资
    张力      男      业务部  600
    依次类推
      

  4.   

    先制作一个excel模板!直接写再excel的格子里面,然后根据你的需要进行合并给你一个例子看看!
    On Error Resume Next
    Dim PageNum As Integer '''打印的总的页数
    Dim Sl As Integer '''每张能打印的条数
    Dim c As IntegerIf Msf.Rows < 5 Then
        s = MsgBox("没有需要打印的记录!!", vbInformation, "提示")
        Exit Sub
    End If'''''找出需要打印的页数
    PageNum = 1
    Sl = 17
    c = 1
    While Not (Sl * c) >= (Msf.Rows - 4)
        c = c + 1
        PageNum = PageNum + 1
    Wend
    ''''''''''''''''''''''''''''''''
    '''''用于显示打印状态
    'Frame1.Visible = True
    'Label7.Caption = "共 " & Vas.MaxRows & " 条记录"
    'Label5.Caption = "共 " & PageNum & " 页"
    'Label6.Caption = "已经打印 0 页"
    ''''''''''''''''''''For i = 1 To PageNum
    '''>>>>>>>>>>>>>>>>>>>>>分打印的页数
        Dim xlapp As Excel.Application
        Dim xlbook As Excel.Workbook
        Dim file As String
        
        FileCopy App.path & "\report\你的.xls", App.path & "\你的.xls"
        file = App.path & "\你的.xls"
        
        Set xlapp = New Excel.Application
        'Set xlapp = CreateObject("excel.Application")
        'xlapp.Visible = False '''''隐藏excel
        Set xlbook = xlapp.Workbooks.Open(file)
        xlbook.Application.DisplayAlerts = False
        
        
        With xlbook.Sheets(1)
            
            For R = 1 To Sl
                For c = 1 To 22
                    Msf.Row = (i - 1) * Sl + 3 + R
                    Msf.Col = c - 1
                    .Cells(R + 6, c) = Msf.Text
                Next
                If Msf.Row = Msf.Rows - 1 Then Exit For
            Next
            .PageSetup.Orientation = xlLandscape
            .PrintOut
            xlapp.Visible = False
            xlapp.ActiveWorkbook.Saved = True
            xlapp.Quit
            Set xlbook = Nothing
            Set xlapp = Nothing
        End With    
    Next
    CMdPrint.Enabled = False
    Exit Sub
    err:
        s = MsgBox(err.Description, vbInformation, "错误")
      

  5.   

    真是简单问题复杂化。一个很简单的vba例子:
    假设你在excel里a1:d7的数据如下:
    姓名 性别 部门 工资
    张1 男 业务部 600
    张2 女 业务部 700
    张3 男 业务部 600
    张4 男 工业部 780
    张5 女 食品部 600
    张6 男 业务部 500
    你先编辑一个宏,输入vba代码如下:
    Sub 宏1()
    ' 宏1 Macro
    ' lsf 记录的宏 2004-4-13
    i = Selection.Row - 1
    For j = 1 To i - 1
     Rows("1:1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Rows(j * 3).Select
        Selection.Insert Shift:=xlDown
        Application.CutCopyMode = False
        Selection.Insert Shift:=xlDown
    Next
    End Sub
    然后回到工作表,选中最后一行(在这个例子中是第7行,张6 男 业务部  500)
    最后运行你刚才编辑的那个宏就可以了。
    这只是一个例子,在实际运用时应该还可以改进一下。。
      

  6.   

    谢谢lsftest了,我太苯了,我看不懂你写的,selection 是什么,这个宏放在哪儿,vb中还是excel中
      

  7.   

    selection是vba代码,表示选中的区域,这个宏是放在excel里面运行的。
      

  8.   

    如果可以,试试AC Report,我自己在Delphi下发的,可以在VB下使用,做表比Excel灵活,COM版控件的下载地址(含VB和Delphi的调用实例):
    http://www.acreport.com/dispbbs.asp?BoardID=15&ID=84&replyID=208&skin=1工资条的例子:
    http://www.efile.com.cn/efile/syy_tfsky/gzt.png
    http://www.efile.com.cn/efile/syy_tfsky/gzt2.png具体的可以去以下地方看看:
    http://syy_tfsky.efile.com.cn
    www.acreport.comm