用access,这本来不是我的活的,我用vb调用过excel来打印报表,现在也想用这个实现,不知道可不可以实现

解决方案 »

  1.   

    小问题,我给你一个例子,你看看吧。
    其基本方法如下:
    第一步建好excel报表的模板。
    第二步在程序中调用,并在工程事引用
    看看以下的例子:
    Private Sub cmdprint_Click()Dim wkbObj As Workbook  '定义工作空间
    Dim wksObj As New Worksheet  '定义表单    On Error GoTo ErrorE:
            
    If MaskEdBox1.Text = "" Or IsDate(MaskEdBox1.FormattedText) = False Then
        MaskEdBox1.Text = Format("1901-01-01", "YYYY年MM月DD日")
    End If
    If MaskEdBox2.Text = "" Or IsDate(MaskEdBox2.FormattedText) = False Then
      MaskEdBox2.Text = Format(Date, "YYYY年MM月DD日")
      End If
     '意向客户资料全查询
     
     labprintinfor.Caption = "正在生成打印,请等待......."
     labprintinfor.Visible = True
         Set mSHfind = New SHFind
         Set Rs3 = New ADODB.Recordset
         Set Rs3 = mSHfind.SHGetGuestM(Trim(txtguestname.Text), Trim(txtcompanyname.Text), MaskEdBox1.FormattedText, MaskEdBox2.FormattedText)
         
        If Rs3.EOF Then
            Rs3.Close
            Set Rs3 = Nothing
            Exit Sub
         End If
        Set wkbObj = Workbooks.Open(App.Path & "\report\Xguestpass.xls") '打开模版
        Set wksObj = wkbObj.Worksheets(1)           '打开表单模版
        '表头
                 wksObj.Cells(1, 1) = "操作员:"
                   wksObj.Cells(1, 2) = PUserName
                   wksObj.Cells(2, 1) = "日期:"
                   wksObj.Cells(2, 2) = Date
        wksObj.Cells(1, 8) = PUnitName
        wksObj.Cells(2, 8) = PEnglishname
        wksObj.Cells(5, 1) = "起始日期:" & MaskEdBox1.FormattedText
        wksObj.Cells(5, 3) = "结束日期:" & MaskEdBox2.FormattedText
         I = 6
         Do Until Rs3.EOF
               I = I + 1
               '报尾        ' 表内容
              wksObj.Cells(I, 1) = IIf(IsNull(Trim(Rs3!DguestID)) = True, "", Trim(Rs3!DguestID))
              wksObj.Cells(I, 2) = IIf(IsNull(Trim(Rs3!dguestname)) = True, "", Trim(Rs3!dguestname))
              
              wksObj.Cells(I, 3) = IIf(IsNull(Trim(Rs3!Dsex)) = True, "", Trim(Rs3!Dsex))
              wksObj.Cells(I, 4) = IIf(IsNull(Trim(Rs3!Dtel)) = True, "", Trim(Rs3!Dtel))
              
              wksObj.Cells(I, 5) = IIf(IsNull(Trim(Rs3!Demail)) = True, "", Trim(Rs3!Demail))
              wksObj.Cells(I, 6) = IIf(IsNull(Trim(Rs3!DpostNumber)) = True, "", Trim(Rs3!DpostNumber))
              
              wksObj.Cells(I, 7) = IIf(IsNull(Trim(Rs3!DconnectAddress)) = True, "", Trim(Rs3!DconnectAddress))
            
             Rs3.MoveNext
              'copy行
              If Not Rs3.EOF Then
               wksObj.Range("A7:M7").Select
                Selection.Copy
                wksObj.Range("A" + Format(I + 1)).Select
                ActiveSheet.Paste
                End If
              
       Loop   '可视
        wkbObj.Application.Visible = True
        '打印预兰
        wksObj.PrintPreview
        '关闭
        wkbObj.Close SaveChanges:=False
        Workbooks.Close
        labprintinfor.Visible = False
        Exit Sub
    ErrorE:
      MsgBox "系统出错,请联系管理员!", , "提示"
    End Sub
      

  2.   

    非常感谢您,我是说用VBA,这个是可以用的是吗?我先试一下吧
      

  3.   

    没有什么,你还没有建立excel模板
    还有你要用的查询哟
      

  4.   

    我用VB做过的,你的意思是我可以把在VB中写的那些代码直接帖过来就可以了?
      

  5.   

    我用VB做过的,你的意思是我可以把在VB中写的那些代码直接帖过来就可以了?
      

  6.   

    我要帖到VBA中呀,我要用VBA来做开发的呀