请问DATAGRID导出成EXCEL可以做成标准模块,供所有窗体调用吗
程序有好多窗体,窗体中有DATAGRID控件,客户要求每个DATAGRID都提供引出功能。问题如下:1、我能否把下面的引出程序做成模块供每个窗体调用,如果能调用话,调用的代码怎么写。
2、我每个DATAGRID中RECORD中的记录集的命名都不相同,不知道如果引出程序可以做成通用模块话会不会有影
响,还有就是每个DATAGRID在声明时Dim CON2 As New Connection, rs4 As New Recordset,其中
Recordset可以做成相同命名吗,比如说都叫RS。如果都命名RS不知道会不会对每个窗体的记录集有影响,例如
下面的导出程序的RECORDSET的命名就是RS4。
3、还有网上说,这样引出程序数据量大会慢,在创建了excel的sheet以后 定义
Mysheet.Cells.CopyFromRecordset Recordset
这样就把datagrid的rs的记录都放到excel的sheet里面了,这样好象是快了一点,但表头无法导出,请问有什么
好的解决办法吗。
问题比较菜,请各位能给予指教。
导出程序如下:
Private Sub Command2_Click()
Dim I As Integer
Dim j As Integer
Dim m As Integer
Dim n As Integer
'建立excel对象
Set xlApp = CreateObject("excel.application")
Dim xlBook As Object
Dim xlSheet As Object
xlApp.Visible = True
'建立excel对象的工作薄对象
Set xlBook = xlApp.Workbooks.Add
'建立excel对象的工作表对象
Set xlSheet = xlBook.Worksheets(1)
j = DataGrid1.Columns.Count
I = 1
For n = 1 To j - 1
'如果DataGrid1表格中第n列可见,则将其该列的列标题输出至excel表
If DataGrid1.Columns(n).Visible = True Then
'在excel表中的第2行,第i列对应的单元格中显示DataGrid1表格中第n列的列标题
xlSheet.Cells(2, I) = DataGrid1.Columns(n).Caption
I = I + 1
End If
Next n
rs4.MoveFirst
m = 0
Do While Not rs4.EOF
I = 1
For n = 1 To j - 1
'如果ataGrid1表格中第n列可见,则将其该列的值输出至excel表
If DataGrid1.Columns(n).Visible = True Then
'在excel表中的第m+3行,第i列对应的单元格中显示DataGrid1表格中第n列的值
xlSheet.Cells(m + 3, I) = DataGrid1.Columns(n).Value
I = I + 1
End If
Next n
rs4.MoveNext
m = m + 1
Loop
End Sub