我刚刚开始接触VBA(以前一直用的VC)。现在我需要用Excel做一个报表,就是简单的查询mdb数据库,然后将查询结果写到Excel中,请问该如何做?请各位大侠给一个大体的技术思路。

解决方案 »

  1.   

    '可用用ADO查询mdb数据,然后将结果记录集写到Excel中。
    '查询[略]
    '写记录集:
    Dim appExcel As New Excel.Application, bookExcel As Workbook, destRange As Range
       Set appExcel = CreateObject("Excel.application")
       '''''''''''''''''''''      `
       Processing 6, "电子表格初始化"
       With appExcel.Application
          bytSheetsInNewBook = .SheetsInNewWorkbook
          .SheetsInNewWorkbook = 1
       End With
       Set bookExcel = appExcel.Workbooks.Add
       appExcel.Application.SheetsInNewWorkbook = bytSheetsInNewBook
       Set destRange = bookExcel.Sheets(1).Range("A1")
    destRange.CopyFromRecordset Rst
      

  2.   

    '操作错误,代码从写:
    Dim appExcel As New Excel.Application, bookExcel As Workbook, destRange As Range
    dim Rst as new adodb.recordset
       '……查询记录的代码[略]
       Set bookExcel = appExcel.Workbooks.Add
       Set destRange = bookExcel.Sheets(1).Range("A1")
       '将记录集插入到destRange开始的位置:
       destRange.CopyFromRecordset Rst
      

  3.   

    楼上的正确,在vba和vb中是差不多的,也要引用Excel对象
      

  4.   

    dim cn as adodb.connection
    dim rs as adodb.recordset
    dim exl as excel.application
    dim strSQL as string
    dim strCN as stringset cn = new adodb.connection
    set rs = new adodb.recordset
    set exl = new excel.applicationstrCN = "这里写连接字符串"
    strSQL = "这里写SQL语句"cn.open strCN
    rs.open strSQL,cn
    if rs.eof = false then
      exl.Workbooks.Add
      for i = 0 to rs.recordcount -1
          exl.Cells(1, j) = rs.fields("字段1") & ""
          exl.cells(2, j) = rs.fields("字段2") & ""
          .....
          rs.movenext
      next
    end
    rs.close
    cn.close
    objExl.Visible = True
      

  5.   

    set cn = nothing
    set rs = nothing
    set exl = nothing
      

  6.   

    只要用vb调用一下excel的对象,然后象操作其他对象一样来操作excel。
    很方便
      

  7.   

    dim exl as excel.application
    set exl = new excel.application
      

  8.   

    Access 2 Excel (VBA+ADO)Dim xlApp As New Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim TmpStr As String
    Dim Cnn As ADODB.Connection
    Dim Rs As ADODB.Recordset
    Set Cnn = New ADODB.Connection
    Set Rs = New ADODB.Recordset
       Cnn.CursorLocation = adUseClient
       Cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\test.mdb"
       Cnn.Open
    TmpStr = "select * From 表1"
       Set Rs = New ADODB.Recordset
       Rs.CursorLocation = adUseClient
       Rs.Open TmpStr, Cnn, adOpenKeyset, adLockOptimisticIf Not (Rs.BOF And Rs.EOF) Then
        Rs.MoveFirst
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = Nothing
        Set xlSheet = Nothing
      xlApp.Workbooks.Add
      Set xlBook = xlApp.Workbooks(1)
      Set xlSheet = xlBook.Worksheets(1)
      xlSheet.Activate
    xlSheet.Cells(1, 1)= Rs("表的字段名1")  '把表1的第一个记录的字段名1的值写到Excel中的"A1"
    ...
    ...
    xlApp.ActiveWorkbook.SaveAs "C:\excel.xls"  Excel保存在C:\
    xlApp.Quit
    Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = NothingRs.Close
    Set Rs = Nothing
    Set Cnn= Nothing