設(shè)為首頁收藏本站Access中國

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

12下一頁
返回列表 發(fā)新帖
查看: 8123|回復(fù): 12
打印 上一主題 下一主題

[模塊/函數(shù)] 【源碼】一個用于將記錄集數(shù)據(jù)導(dǎo)出到Excel的函數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2010-10-15 11:38:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 紅塵如煙 于 2010-10-18 23:32 編輯

使用示例:
導(dǎo)出窗體數(shù)據(jù):    ExportToExcel Me.Recordset, "C:\Test.xls"
導(dǎo)出子窗體數(shù)據(jù):ExportToExcel Me.子窗體.Form.Recordset, "C:\Test.xls"
導(dǎo)出列表框數(shù)據(jù):ExPortToExcel Me.List1.Recordset, "C:\Test.xls"
  1. '======================================================================================================
  2. '函數(shù)名稱: ExportToExcel
  3. '功能描述: 將記錄集中的數(shù)據(jù)導(dǎo)出到Excel文件
  4. '輸入?yún)?shù): rst                 必需的,用于導(dǎo)出數(shù)據(jù)的打開的記錄集對象,可以使用窗體的Recordset屬性
  5. '                      FileName    必需的,導(dǎo)出的Excel文件存放路徑名
  6. '返回參數(shù): 成功導(dǎo)出返回True,否則返回False
  7. '使用說明: 可以對綁定窗體進行篩選,然后將窗體的Recrodset屬性傳遞給rst參數(shù),這樣就可以將篩選結(jié)果導(dǎo)出,另
  8. '                      外還可以用于導(dǎo)出列表框、組合框中的數(shù)據(jù),同樣只需要傳遞Recordset屬性即可
  9. '兼 容 性: 必須安裝Excel,但無需引用
  10. '作        者: 紅塵如煙
  11. '創(chuàng)建日期: 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 ("沒有數(shù)據(jù)可導(dǎo)出!"), 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("數(shù)據(jù)已導(dǎo)出,是否打開并查看?", 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 & "',可能該文件已被打開或沒有權(quán)限。", vbCritical
  69.     Else
  70.         MsgBox Err.Source & " #" & Err & vbCrLf & vbCrLf & Err.Description, vbCritical
  71.     End If
  72.     Resume Exit_ExportToExcel
  73. End Function

復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2010-10-15 11:45:44 | 只看該作者
謝謝分享

點擊這里給我發(fā)消息

3#
發(fā)表于 2010-10-15 22:13:35 | 只看該作者
好實例,謝謝 紅塵 分享
4#
發(fā)表于 2010-10-16 10:18:17 | 只看該作者
收藏了

點擊這里給我發(fā)消息

5#
發(fā)表于 2011-1-1 01:29:16 | 只看該作者

導(dǎo)出子窗體數(shù)據(jù) 出錯

本帖最后由 魚兒游游 于 2011-1-1 01:31 編輯

導(dǎo)出子窗體數(shù)據(jù) 出錯

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有帳號?注冊

x
6#
發(fā)表于 2011-1-7 14:27:28 | 只看該作者
me.子窗體.form.recordset出錯呀,不支持該對象類型
7#
發(fā)表于 2011-5-10 23:53:37 | 只看該作者
謝謝分享,收藏了
8#
發(fā)表于 2013-11-1 11:44:17 | 只看該作者
多謝紅塵分享,另想請教:如果我想導(dǎo)出的excel文件已經(jīng)存在,如何讓導(dǎo)出數(shù)據(jù)自動導(dǎo)出到該excel文件的一個新建工作表呢?
9#
發(fā)表于 2013-11-1 12:03:59 | 只看該作者
本帖最后由 smilingkiss 于 2013-11-1 14:57 編輯

謝謝
回復(fù)

使用道具 舉報

10#
發(fā)表于 2013-11-2 20:14:06 | 只看該作者
大哥,我試過你的程序,第一次點擊調(diào)用了該函數(shù)的按鈕,導(dǎo)出的excel文件成功,但是關(guān)了excel后繼續(xù)按那個按鈕(也就是繼續(xù)執(zhí)行一次),結(jié)果導(dǎo)出來的excel只有標題欄,沒有數(shù)據(jù),只有把窗體關(guān)了重新打開才可以成功導(dǎo)出,百思不得其解啊,還請指教啊!
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

QQ|站長郵箱|小黑屋|手機版|Office中國/Access中國 ( 粵ICP備10043721號-1 )  

GMT+8, 2025-7-13 07:56 , Processed in 0.131473 second(s), 35 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表