Office中国论坛/Access中国论坛
标题:
【源码】一个用于将记录集数据导出到Excel的函数
[打印本页]
作者:
红尘如烟
时间:
2010-10-15 11:38
标题:
【源码】一个用于将记录集数据导出到Excel的函数
本帖最后由 红尘如烟 于 2010-10-18 23:32 编辑
使用示例:
导出窗体数据: ExportToExcel Me.Recordset, "C:\Test.xls"
导出子窗体数据:ExportToExcel Me.子窗体.Form.Recordset, "C:\Test.xls"
导出列表框数据:ExPortToExcel Me.List1.Recordset, "C:\Test.xls"
'======================================================================================================
'函数名称: ExportToExcel
'功能描述: 将记录集中的数据导出到Excel文件
'输入参数: rst 必需的,用于导出数据的打开的记录集对象,可以使用窗体的Recordset属性
' FileName 必需的,导出的Excel文件存放路径名
'返回参数: 成功导出返回True,否则返回False
'使用说明: 可以对绑定窗体进行筛选,然后将窗体的Recrodset属性传递给rst参数,这样就可以将筛选结果导出,另
' 外还可以用于导出列表框、组合框中的数据,同样只需要传递Recordset属性即可
'兼 容 性: 必须安装Excel,但无需引用
'作 者: 红尘如烟
'创建日期: 20010-10-14
'======================================================================================================
Function ExportToExcel(rst As Object, FileName As String) As Boolean
On Error GoTo Err_ExportToExcel
Dim objExcelApp As Object
Dim objExcelBook As Object
Dim objExcelSheet As Object
Dim objExcelQuery As Object
If rst.RecordCount =0 Then
MsgBox ("没有数据可导出!"), vbExclamation
GoSub Exit_ExportToExcel
End If
If Dir(FileName) <> "" Then Kill FileName
DoCmd.Hourglass True
Set objExcelApp = CreateObject("Excel.Application")
Set objExcelBook = objExcelApp.Workbooks().Add()
Set objExcelSheet = objExcelBook.Worksheets("sheet1")
Set objExcelQuery = objExcelSheet.QueryTables.Add(rst, objExcelSheet.Range("A1"))
With objExcelQuery
.FieldNames = True
.FillAdjacentFormulas = False
.PreserveFormatting = True
.BackgroundQuery = True
.RefreshStyle = 1 ' xlInsertDeleteCells
.SavePassword = True
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.PreserveColumnInfo = True
End With
objExcelQuery.Refresh
objExcelBook.Worksheets("sheet1").SaveAs FileName
ExportToExcel = True
If MsgBox("数据已导出,是否打开并查看?", vbQuestion + vbYesNo) = vbYes Then
objExcelApp.Visible = True
Else
objExcelBook.Saved = True
objExcelApp.Quit
End If
Exit_ExportToExcel:
Set objExcelApp = Nothing
Set objExcelBook = Nothing
Set objExcelSheet = Nothing
Set rst = Nothing
DoCmd.Hourglass False
Exit Function
Err_ExportToExcel:
If Err = 70 Then
MsgBox "无法删除文件 '" & FileName & "',可能该文件已被打开或没有权限。", vbCritical
Else
MsgBox Err.Source & " #" & Err & vbCrLf & vbCrLf & Err.Description, vbCritical
End If
Resume Exit_ExportToExcel
End Function
复制代码
作者:
yanwei82123300
时间:
2010-10-15 11:45
谢谢分享
作者:
tmtony
时间:
2010-10-15 22:13
好实例,谢谢 红尘 分享
作者:
xinbao
时间:
2010-10-16 10:18
收藏了
作者:
鱼儿游游
时间:
2011-1-1 01:29
标题:
导出子窗体数据 出错
本帖最后由 鱼儿游游 于 2011-1-1 01:31 编辑
导出子窗体数据 出错
作者:
zhoudb2010
时间:
2011-1-7 14:27
me.子窗体.form.recordset出错呀,不支持该对象类型
作者:
szyewj
时间:
2011-5-10 23:53
谢谢分享,收藏了
作者:
smilingkiss
时间:
2013-11-1 11:44
多谢红尘分享,另想请教:如果我想导出的excel文件已经存在,如何让导出数据自动导出到该excel文件的一个新建工作表呢?
作者:
smilingkiss
时间:
2013-11-1 12:03
本帖最后由 smilingkiss 于 2013-11-1 14:57 编辑
谢谢
作者:
smilingkiss
时间:
2013-11-2 20:14
大哥,我试过你的程序,第一次点击调用了该函数的按钮,导出的excel文件成功,但是关了excel后继续按那个按钮(也就是继续执行一次),结果导出来的excel只有标题栏,没有数据,只有把窗体关了重新打开才可以成功导出,百思不得其解啊,还请指教啊!
作者:
purplerose
时间:
2015-7-25 21:39
谢谢分享!
作者:
popo559
时间:
2015-11-29 18:00
smilingkiss 发表于 2013-11-2 20:14
大哥,我试过你的程序,第一次点击调用了该函数的按钮,导出的excel文件成功,但是关了excel后继续按那个按 ...
同样的问题,我用的是: 导出列表框数据:ExPortToExcel Me.List1.Recordset, "C:\Test.xls"
必须关掉窗体再进去 才能成功导出
作者:
utalents
时间:
2018-6-7 09:21
先收藏
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3