请问一下关于VB导出到excel的有关问题

请教一下关于VB导出到excel的问题
我现在做的程序是这样的:
通过SQL语句查询得到的结果放在表格控件mshflexgrid中,点击导出的时候把表格中显示的所有内容导出到excel
但是之前代码的效果是往excel表格中一格一格的添加内容 这样在数据比较多的时候就会很慢

有没有什么办法类似于整表复制的可以一下子就把全部数据填入excel中呢



VB code
Private Sub cmdexcel_Click()
Dim save As String
Dim xlsRowCount As Integer, xlsColCount As Integer '生成的表格的行数和列数
Dim xlsApp As excel.Application
Dim xlsBook As excel.Workbook
Dim xlsSheet As excel.Worksheet
Dim i, j As Long


On Error GoTo errexcel

Set xlsApp = CreateObject("Excel.Application")
Set xlsBook = xlsApp.Workbooks.Add
Set xlsSheet = xlsBook.Worksheets(1)
'On Error Resume Next
Err.Number = 0
xlsRowCount = rlist.Rows
xlsColCount = rlist.Cols

codsave.CancelError = True
codsave.InitDir = App.Path
codsave.Filter = "Excel 97-03(*.xls)|*.xls|Excel 2007(*.xlsx)|*.xlsx"
codsave.ShowSave

Me.MousePointer = vbHourglass


With xlsSheet
'设置电子表格各列的宽度
.Columns(1).ColumnWidth = 16 '每一个汉字大概占2的宽度(在默认的12号字的情况下)
.Columns(2).ColumnWidth = 20
.Columns(3).ColumnWidth = 30
.Columns(4).ColumnWidth = 30
.Columns(5).ColumnWidth = 30

'设置电子表格各行的高度
For i = 1 To xlsRowCount
.Rows(i).RowHeight = 18
Next
'把rlist的内容写入到电子表格中
.Cells(1, 1).Value = "号  码"
.Cells(1, 2).Value = "姓  名"
.Cells(1, 3).Value = "单  位"
.Cells(1, 4).Value = "住  址"
.Cells(1, 5).Value = "备  注"
For i = 0 To xlsRowCount - 1
For j = 0 To 4
.Cells(i + 2, j + 1).Value = "'" & rlist.TextMatrix(i, j + 1)            '第二行
Next
Next
End With

xlsApp.Visible = False '是否显示电子表格
Me.MousePointer = vbDefault
'xlsBook.SaveAs App.Path & "\Test.xlsx" '存到根目录文件名test.xlsx
save = codsave.FileName
xlsBook.SaveAs save
MsgBox "导出成功", vbInformation
xlsBook.Close savechanges:=False
xlsApp.Quit
Set xlsSheet = Nothing
Set xlsBook = Nothing
Set xlsApp = Nothing '交还控制给Excel
Exit Sub
errexcel:
Me.MousePointer = vbDefault
xlsApp.Quit

Set xlsSheet = Nothing
Set xlsBook = Nothing
Set xlsApp = Nothing '交还控制给Excel

Exit Sub
End Sub


------解决方案--------------------

可以把 Excel 当作 Jet Engine 的外部数据库,用 SQL 语句从 Access 或 SQL 数据库直接导入记录集。
------解决方案--------------------
针对你这种情况,比较快的是将Recordset 直接导出为Excel,实际是CopyFromRecordset这个方法的应用

VB code


 Dim Myexcel As New Excel.Application
    Dim Mybook As New Excel.Workbook
    Dim Mysheet As New Excel.Worksheet
    dim i as long

    Set Mybook = Myexcel.Workbooks.Add '添加一个新的BOOK
    Set Mysheet = Mybook.Worksheets.Add '添加一个新的SHEET
    Myexcel.Visible = True
    Rs.Open SQL, Cn
    With Mysheet
        .Range("A2").CopyFromRecordset Rs    '这里就是具体的应用
        .PageSetup.PrintGridlines = True
        .PrintPreview
    End With
    Rs.close 
    Set Rs = Nothing

------解决方案--------------------
探讨
我现在做的程序是这样的:
通过SQL语句查询得到的结果放在表格控件mshflexgrid中,点击导出的时候把表格中显示的所有内容导出到excel
但是之前代码的效果是往excel表格中一格一格的添加内容 这样在数据比较多的时候就会很慢
有没有什么办法类似于整表复制的可以一下子就把全部数据填入excel中呢