小弟初学VB,在网上查找了很多VB导出EXCEL的方法,都不太会用,我经常用vb+adodc+DataGrid来调用ACCESS数据库,
请问高手能不能给个利用ADODC导出到EXCEL的小代码,不胜感激。

解决方案 »

  1.   

    xlsheet.Range("a1").CopyFromRecordset Adodc1.Recordset
      

  2.   

    Private Sub Command1_Click()
        Dim i As Long, j As Long
        Dim xlsApp As Excel.Application
        Dim xlsBook As Excel.Workbook
        Dim xlssheet As Excel.Worksheet
        Set xlsApp = New Excel.Application
        Set xlsApp = CreateObject("Excel.Application")
        xlsApp.Visible = True
        xlsApp.Workbooks.Add
        'Set xlsBook = xlsApp.Workbooks.Open(App.Path & "\filename.xls")
        xlsApp.Sheets("sheet1").Select
        DataGrid1.Row = 0
        i = 1
        Do While DataGrid1.Row >= 0
            If i = DataGrid1.Row Then Exit Do
            i = DataGrid1.Row        For j = 0 To DataGrid1.Columns.Count - 1
                With xlsApp
                    .Cells(DataGrid1.Row + 1, j + 1) = DataGrid1.Columns(j).Text
                End With
            Next
            DataGrid1.Row = DataGrid1.Row + 1
        Loop    If xlsApp.ActiveWorkbook.Saved = False Then
            xlsApp.ActiveWorkbook.SaveAs App.Path & "\mmm.xls"
        End If
        xlsApp.Quit
        Set xlsApp = Nothing
    end sub
      

  3.   

    把excel看作数据库,也可以从access直接导入excel
      

  4.   

    2楼的代码挺全,我就不给了,不过用得是DataGrid1.Row判断记录条数,也可以用
    Adodc1.Recordset.RecordCount 作循环条件,似乎更符合lz的要求
      

  5.   

    特别感谢2楼高手,代码很适合我,不过到最后总是提示“行号无效”,点击“调试”定位到
    DataGrid1.Row = DataGrid1.Row + 1总共2行,DataGrid1.Row 当前等于1小弟愚笨,不知道怎样解决,请指教一楼高手给的代码看起来预期效果应该是很好,但是小弟初学,不知道应该怎样用。所以只能给个感谢分,请谅解。
      

  6.   

    一楼的这样写
        Dim i As Long, j As Long
        Dim xlsApp As Excel.Application
        Dim xlsBook As Excel.Workbook
        Set xlsApp = New Excel.Application
        Set xlsApp = CreateObject("Excel.Application")
        xlsApp.Visible = True
        xlsApp.Workbooks.Add
        'Set xlsBook = xlsApp.Workbooks.Open(App.Path & "\filename.xls")
        xlsApp.Sheets("sheet1").Select
        
        xlsApp.ActiveSheet.Range("A1").CopyFromRecordset Adodc1.Recordset    If xlsApp.ActiveWorkbook.Saved = False Then
            xlsApp.ActiveWorkbook.SaveAs App.Path & "\mmm0.xls"
        End If
        xlsApp.Quit
        Set xlsApp = Nothing
      

  7.   

    非常非常感谢 king06 ,您的代码很适合我这个超级菜鸟,辛苦了!
      

  8.   

    个人感觉king06朋友在9楼中引用1楼朋友的代码确实效果不错,所以在此也特别感谢1楼朋友。