小弟我是第一次用vba,請問怎樣將一個窗體那邊輸入的數據在報表那邊打印出來!
能提供具體的代碼和方法的兄弟將得到高分!

解决方案 »

  1.   

    直接打印窗体!PrintForm,查查MSDN即可
      

  2.   

    这是我做工程时的一段程序代码,你应该可以看明白了,它是直接操作Excel文件的
    如有问题,可以给我发E:[email protected] '关于报表打印的Excel几个定义:
        Dim xlApp As Excel.Application
        Dim xlBook As Excel.Workbook
        Dim xlSheet As Excel.Worksheet
        Dim intDay As Integer
        '打开错误处理陷阱
        On Error GoTo ErrGoto
        '-------------------------------
        '计算需要打印的天数
        intDay = CInt((mfgTemp.Rows - 3) / 31)
        '代码正文
        strSource = App.Path & "\报表.xls"                   '报表.xls就是一个模版文件
        strDestination = App.Path & "\大循环推焦计划报表.xls"
        If Dir(strDestination) <> "" Then
           Kill strDestination
        End If
        FileCopy strSource, strDestination                   '将模版文件拷贝到一个临时文件
        Set xlApp = New Excel.Application
        Set xlApp = CreateObject("Excel.Application")        '激活EXCEL应用程序
        xlApp.Visible = False                                '隐藏EXCEL应用程序窗口
        
        
        Set xlBook = xlApp.Workbooks.Open(strDestination)    '打开工作簿,strDestination为一个EXCEL报表文件
        Set xlSheet = xlBook.Worksheets(1)                   '设定工作表
        '-------------------------------------------
        For k = 0 To intDay - 1
            '清空表格
            With xlSheet
                For i = 4 To 22
                    .Range("B" & Format(i, "0")).value = ""
                    .Range("D" & Format(i, "0")).value = ""
                    .Range("F" & Format(i, "0")).value = ""
                    .Range("H" & Format(i, "0")).value = ""
                    .Range("J" & Format(i, "0")).value = ""
                    .Range("L" & Format(i, "0")).value = ""
                    .Range("N" & Format(i, "0")).value = ""
                    .Range("P" & Format(i, "0")).value = ""
                    .Range("R" & Format(i, "0")).value = ""
                    .Range("T" & Format(i, "0")).value = ""
                Next i
            End With
            '-------------------------------------------
            '数据填写区
            With xlSheet
                .Range("A2").value = mfgTemp.TextMatrix(2 + 31 * k, 1)              '日期
                .Range("E2").value = strZhouZhuan                                   '周转时间
                .Range("I2").value = strSanShiJian                                  '二、三炉操作时间
                .Range("L2").value = strYiShiJian                                   '一炉操作时间
                '-------------------------------------------
                '如果有检修时间,则填写检修时间
                If Len(mfgTemp.TextMatrix(2 + 31 * k, 2)) > 10 Then
                    .Range("A" & Format(22, "0")).value = Trim(mfgTemp.TextMatrix(2 + 31 * k, 2))
                End If
                '填写计划时间
                For i = 4 To 8
                    .Range("B" & Format(i, "0")).value = mfgTemp.TextMatrix(4 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(5 + 31 * k, i - 4)
                    .Range("D" & Format(i, "0")).value = mfgTemp.TextMatrix(7 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(8 + 31 * k, i - 4)
                    .Range("F" & Format(i, "0")).value = mfgTemp.TextMatrix(10 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(11 + 31 * k, i - 4)
                    .Range("H" & Format(i, "0")).value = mfgTemp.TextMatrix(13 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(14 + 31 * k, i - 4)
                    .Range("J" & Format(i, "0")).value = mfgTemp.TextMatrix(16 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(17 + 31 * k, i - 4)
                    .Range("L" & Format(i, "0")).value = mfgTemp.TextMatrix(19 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(20 + 31 * k, i - 4)
                    .Range("N" & Format(i, "0")).value = mfgTemp.TextMatrix(22 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(23 + 31 * k, i - 4)
                    .Range("P" & Format(i, "0")).value = mfgTemp.TextMatrix(25 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(26 + 31 * k, i - 4)
                    .Range("R" & Format(i, "0")).value = mfgTemp.TextMatrix(28 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(29 + 31 * k, i - 4)
                    .Range("T" & Format(i, "0")).value = mfgTemp.TextMatrix(31 + 31 * k, i - 4) & "     " & mfgTemp.TextMatrix(32 + 31 * k, i - 4)
                Next i
                '填写计划时间
                For i = 10 To 16
                    .Range("B" & Format(i, "0")).value = mfgTemp.TextMatrix(4 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(5 + 31 * k, i - 5)
                    .Range("D" & Format(i, "0")).value = mfgTemp.TextMatrix(7 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(8 + 31 * k, i - 5)
                    .Range("F" & Format(i, "0")).value = mfgTemp.TextMatrix(10 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(11 + 31 * k, i - 5)
                    .Range("H" & Format(i, "0")).value = mfgTemp.TextMatrix(13 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(14 + 31 * k, i - 5)
                    .Range("J" & Format(i, "0")).value = mfgTemp.TextMatrix(16 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(17 + 31 * k, i - 5)
                    .Range("L" & Format(i, "0")).value = mfgTemp.TextMatrix(19 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(20 + 31 * k, i - 5)
                    .Range("N" & Format(i, "0")).value = mfgTemp.TextMatrix(22 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(23 + 31 * k, i - 5)
                    .Range("P" & Format(i, "0")).value = mfgTemp.TextMatrix(25 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(26 + 31 * k, i - 5)
                    .Range("R" & Format(i, "0")).value = mfgTemp.TextMatrix(28 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(29 + 31 * k, i - 5)
                    .Range("T" & Format(i, "0")).value = mfgTemp.TextMatrix(31 + 31 * k, i - 5) & "     " & mfgTemp.TextMatrix(32 + 31 * k, i - 5)
                Next i
                '填写计划时间
                For i = 18 To 21
                    '填写检修时间
                    .Range("B" & Format(i, "0")).value = mfgTemp.TextMatrix(4 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(5 + 31 * k, i - 6)
                    .Range("D" & Format(i, "0")).value = mfgTemp.TextMatrix(7 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(8 + 31 * k, i - 6)
                    .Range("F" & Format(i, "0")).value = mfgTemp.TextMatrix(10 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(11 + 31 * k, i - 6)
                    .Range("H" & Format(i, "0")).value = mfgTemp.TextMatrix(13 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(14 + 31 * k, i - 6)
                    .Range("J" & Format(i, "0")).value = mfgTemp.TextMatrix(16 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(17 + 31 * k, i - 6)
                    .Range("L" & Format(i, "0")).value = mfgTemp.TextMatrix(19 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(20 + 31 * k, i - 6)
                    .Range("N" & Format(i, "0")).value = mfgTemp.TextMatrix(22 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(23 + 31 * k, i - 6)
                    .Range("P" & Format(i, "0")).value = mfgTemp.TextMatrix(25 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(26 + 31 * k, i - 6)
                    .Range("R" & Format(i, "0")).value = mfgTemp.TextMatrix(28 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(29 + 31 * k, i - 6)
                    .Range("T" & Format(i, "0")).value = mfgTemp.TextMatrix(31 + 31 * k, i - 6) & "     " & mfgTemp.TextMatrix(32 + 31 * k, i - 6)
                Next i
                '-------------------------------------------
            End With
            '----------------------------------------------------------------------------------
            xlBook.Save             '保存文件
            xlSheet.PrintOut        '执行打印
        Next k
            xlApp.DisplayAlerts = False
            xlApp.Quit         '退出EXCEL
            xlApp.DisplayAlerts = True
            Set xlApp = Nothing
        PrintPushPlan = True
      

  3.   

    请问
    PrintPushPlan = True
    是什么意思?是控制卷纸的吗?
      

  4.   

    PrintPushPlan 是与工程有关的问题,是一个标志!
      

  5.   

    yefanqiu(叶帆)
    非常感動你的行爲!
    我是仔是太感動了!