设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 7656|回复: 12
打印 上一主题 下一主题

[模块/函数] 【源码】一个用于将记录集数据导出到Excel的函数

[复制链接]
跳转到指定楼层
1#
发表于 2010-10-15 11:38:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 红尘如烟 于 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"
  1. '======================================================================================================
  2. '函数名称: ExportToExcel
  3. '功能描述: 将记录集中的数据导出到Excel文件
  4. '输入参数: rst                 必需的,用于导出数据的打开的记录集对象,可以使用窗体的Recordset属性
  5. '                      FileName    必需的,导出的Excel文件存放路径名
  6. '返回参数: 成功导出返回True,否则返回False
  7. '使用说明: 可以对绑定窗体进行筛选,然后将窗体的Recrodset属性传递给rst参数,这样就可以将筛选结果导出,另
  8. '                      外还可以用于导出列表框、组合框中的数据,同样只需要传递Recordset属性即可
  9. '兼 容 性: 必须安装Excel,但无需引用
  10. '作        者: 红尘如烟
  11. '创建日期: 20010-10-14
  12. '======================================================================================================
  13. Function ExportToExcel(rst As Object, FileName As String) As Boolean
  14. On Error GoTo Err_ExportToExcel
  15.     Dim objExcelApp        As Object
  16.     Dim objExcelBook      As Object
  17.     Dim objExcelSheet     As Object
  18.     Dim objExcelQuery     As Object
  19.    
  20.     If rst.RecordCount =0 Then
  21.         MsgBox ("没有数据可导出!"), vbExclamation
  22.         GoSub Exit_ExportToExcel
  23.     End If
  24.    
  25.     If Dir(FileName) <> "" Then Kill FileName
  26.    
  27.     DoCmd.Hourglass True
  28.    
  29.     Set objExcelApp = CreateObject("Excel.Application")
  30.     Set objExcelBook = objExcelApp.Workbooks().Add()
  31.     Set objExcelSheet = objExcelBook.Worksheets("sheet1")
  32.    
  33.     Set objExcelQuery = objExcelSheet.QueryTables.Add(rst, objExcelSheet.Range("A1"))
  34.     With objExcelQuery
  35.             .FieldNames = True
  36.             .FillAdjacentFormulas = False
  37.             .PreserveFormatting = True
  38.             .BackgroundQuery = True
  39.             .RefreshStyle = 1 ' xlInsertDeleteCells
  40.             .SavePassword = True
  41.             .SaveData = True
  42.             .AdjustColumnWidth = True
  43.             .RefreshPeriod = 0
  44.             .PreserveColumnInfo = True
  45.     End With
  46.       
  47.     objExcelQuery.Refresh
  48.    
  49.     objExcelBook.Worksheets("sheet1").SaveAs FileName
  50.     ExportToExcel = True
  51.     If MsgBox("数据已导出,是否打开并查看?", vbQuestion + vbYesNo) = vbYes Then
  52.         objExcelApp.Visible = True
  53.     Else
  54.         objExcelBook.Saved = True
  55.         objExcelApp.Quit
  56.     End If
  57.    
  58. Exit_ExportToExcel:
  59.     Set objExcelApp = Nothing
  60.     Set objExcelBook = Nothing
  61.     Set objExcelSheet = Nothing
  62.     Set rst = Nothing
  63.     DoCmd.Hourglass False
  64.     Exit Function
  65.    
  66. Err_ExportToExcel:
  67.     If Err = 70 Then
  68.         MsgBox "无法删除文件 '" & FileName & "',可能该文件已被打开或没有权限。", vbCritical
  69.     Else
  70.         MsgBox Err.Source & " #" & Err & vbCrLf & vbCrLf & Err.Description, vbCritical
  71.     End If
  72.     Resume Exit_ExportToExcel
  73. End Function

复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-10-15 11:45:44 | 只看该作者
谢谢分享

点击这里给我发消息

3#
发表于 2010-10-15 22:13:35 | 只看该作者
好实例,谢谢 红尘 分享
4#
发表于 2010-10-16 10:18:17 | 只看该作者
收藏了

点击这里给我发消息

5#
发表于 2011-1-1 01:29:16 | 只看该作者

导出子窗体数据 出错

本帖最后由 鱼儿游游 于 2011-1-1 01:31 编辑

导出子窗体数据 出错

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
6#
发表于 2011-1-7 14:27:28 | 只看该作者
me.子窗体.form.recordset出错呀,不支持该对象类型
7#
发表于 2011-5-10 23:53:37 | 只看该作者
谢谢分享,收藏了
8#
发表于 2013-11-1 11:44:17 | 只看该作者
多谢红尘分享,另想请教:如果我想导出的excel文件已经存在,如何让导出数据自动导出到该excel文件的一个新建工作表呢?
9#
发表于 2013-11-1 12:03:59 | 只看该作者
本帖最后由 smilingkiss 于 2013-11-1 14:57 编辑

谢谢
回复

使用道具 举报

10#
发表于 2013-11-2 20:14:06 | 只看该作者
大哥,我试过你的程序,第一次点击调用了该函数的按钮,导出的excel文件成功,但是关了excel后继续按那个按钮(也就是继续执行一次),结果导出来的excel只有标题栏,没有数据,只有把窗体关了重新打开才可以成功导出,百思不得其解啊,还请指教啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 03:54 , Processed in 0.101141 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表