如何在当将查询的记录集插入到excel里后,在最后的记录以后插入刚才插入的记录的汇总记录如何做成自动的呢
就是如果插入的记录集有两个字段:
a     b
1     3
2     5
3     4
4     8
当插入这四条记录后想在最后的也就是第五条记录开始应该是a5 和 b5分别插入 ‘汇总’ 和 ‘20’请问用代码怎么实现,记录集是动态生产的,但是字段是固定的 。

解决方案 »

  1.   

    呵呵,简单了,都不必你在程序中累加计算,只要在末尾写入“汇总”,和“=sum(b1,b4)”。
    sum里面的格式不一定对,有段时间不用EXCEL,忘得差不多了。
    主要意思就是利用EXCEL的公式计算功能,让它来做汇总的工作就可以了。
      

  2.   

    可以使用好多方法,可以使用OLE方法,也可以定义EXCEL对象进行粘贴编辑,还可以使用DDE方法来操作。最后关于汇总可以先在程序中算好,再和上面的数据一起粘贴进EXCEL中。也可以调用EXCEL中的SUM函数(不过这个偶没用过)
      

  3.   

    方法有很多,可以引用EXCEL对象在最后插入一行‘汇总’和‘20’,也可以只引用ADO对象来操作,不过前提是你字段"a"是文本型。'工程->引用Microsoft ActiveX Data Objects 2.x Library
    Private Sub Command1_Click()
        Dim mRst As New ADODB.Recordset
        Dim mCon As New ADODB.Connection
        Dim mSum
        mRst.CursorLocation = adUseClient
        mRst.Open "Select * From [Sheet2$]", mCnnString, adOpenStatic, adLockOptimistic
        mSum = 0
        Do Until mRst.EOF
            mSum = mSum + mRst("b")
            mRst.MoveNext
        Loop
        mCon.CursorLocation = adUseClient
        mCon.Open mCnnString
        mCon.Execute "Insert Into [Sheet2$] Values('" & "汇总'," & CStr(mSum) & ")"
        mCon.Close
        mRst.Close
        Set mCon = Nothing
        Set mRst = Nothing
    End Sub
      

  4.   

    Private Sub Form_Load()
        mCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= " & App.Path & "\bb.xls;" & "Extended Properties=""Excel 8.0;HDR=Yes;"";"
    End Sub
    由于引用ADO对象操作直接操作EXCEL不支持复杂一点的SQL语句(例如SELECT SUM(b) AS mSum FROM [Sheet2$])所以只能用打开记录集的方法一条一条加了。
      

  5.   

    '工程->引用Microsoft Excel x.0 Object Library
    Private Sub Command1_Click()
        Dim xlApp As Excel.Application '定义EXCEL类
        Dim xlBook As Excel.Workbook '定义工件簿类
        Dim xlsheet As Excel.Worksheet '定义工作表类
        Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
        xlApp.Visible = True '设置EXCEL可见
        Set xlBook = xlApp.Workbooks.Open(App.Path & "\bb.xls") '打开EXCEL工作簿
        Set xlsheet = xlBook.Worksheets(2) '打开EXCEL工作表
        xlsheet.Activate '激活工作表
        xlsheet.Cells(6, 1) = "汇总"
        xlsheet.Cells(6, 2) = xlApp.WorksheetFunction.Sum(xlsheet.Range("B2:B5"))
    End Sub
      

  6.   

    但是楼上的大哥,你可知道你所用的xlsheet.Cells(6, 1) = "汇总"
        xlsheet.Cells(6, 2) = xlApp.WorksheetFunction.Sum(xlsheet.Range("B2:B5"))
    里面的数字都是动态的由所插入的记录集所决定的,能不能改成都是动态的呀
      

  7.   

    可以先求出记录的行数,然后把“B5”改成 “B”&[行数] 就可以了.
      

  8.   

    xlsheet.Cells(6,2)改成xlsheet.Cells([行数]+1,2)
      

  9.   

    '工程->引用Microsoft ActiveX Data Objects 2.x Library
    '工程->引用Microsoft Excel x.0 Object Library
    Private Sub Command1_Click()
    Dim xlApp As Excel.Application '定义EXCEL类
        Dim xlBook As Excel.Workbook '定义工件簿类
        Dim xlsheet As Excel.Worksheet '定义工作表类
        
        Dim pubConn As New ADODB.Connection
        Dim rsTable As New ADODB.Recordset
        Dim strConn As String
        
        Set xlApp = CreateObject("Excel.Application") '创建EXCEL应用类
        xlApp.Visible = False '设置EXCEL可见
        Set xlBook = xlApp.Workbooks.Open(App.Path & "\Book1.xls") '打开EXCEL工作簿
        Set xlsheet = xlBook.Worksheets(1) '打开EXCEL工作表
        xlsheet.Activate '激活工作表
        
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\db1.mdb" & ";Persist Security Info=False"
        pubConn.Open strConn
        rsTable.CursorLocation = adUseClient
        rsTable.Open "Select * From Table2", pubConn, adOpenStatic, adLockOptimistic
        
        xlApp.Worksheets(1).Range("A2").CopyFromRecordset rsTable
        
        xlsheet.Cells(rsTable.RecordCount + 2, 1) = "汇总"
        xlsheet.Cells(rsTable.RecordCount + 2, 2) = xlApp.WorksheetFunction.Sum(xlsheet.Range("B2:B" & CStr(rsTable.RecordCount + 1)))
        
        xlBook.Save
        xlApp.Quit
        Set xlBook = Nothing
        Set xlApp = Nothing
        rsTable.Close
        Set rsTable = Nothing
        pubConn.Close
        Set pubConn = Nothing
        
        MsgBox "Ok"
    End Sub