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

Office中國論壇/Access中國論壇

 找回密碼
 注冊

QQ登錄

只需一步,快速開始

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

[模塊/函數(shù)] 導(dǎo)出access查詢(表)到指定excel工作表

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2012-7-22 13:30:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  1. '---------------------------------------------------------------------------------------
  2. ' Procedure : QueryToExcel
  3. ' DateTime  : 2008-12-2 00:02
  4. ' Author      : Henry D. Sy
  5. ' Purpose    : strQueryName 查詢名(表名)
  6. '                   xlsName 工作簿名
  7. '                   strShtName 工作表名
  8. '                   需要引用Microsoft Excel 11.0 Object Library
  9. '---------------------------------------------------------------------------------------
  10. '
  11. Sub QueryToExcel(ByVal strQueryName As String, ByVal xlsName As String, ByVal _
  12.                                                                         strShtName As String)
  13. ' Send the Query results to Excel
  14. ' for further analysis

  15.     Dim rs As ADODB.Recordset
  16.     Dim objXL As Excel.Application
  17.     Dim objWs As Excel.Workbook
  18.     Dim fld As ADODB.Field
  19.     Dim intCol As Integer
  20.     Dim intRow As Integer

  21.     Set rs = New ADODB.Recordset

  22.     ' Get the desired data into a recordset
  23.     rs.Open strQueryName, CurrentProject.Connection

  24.     ' Launch Excel
  25.     Set objXL = New Excel.Application
  26.     ' Open a  worksheet
  27.     Set objWs = objXL.Workbooks.Open(CurrentProject.Path & "" & xlsName & _
  28.                                      ".xls")
  29.     objWs.Worksheets(strShtName).Activate

  30.     ' Copy the data
  31.     ' First the field names
  32.     For intCol = 0 To rs.Fields.Count - 1
  33.         Set fld = rs.Fields(intCol)
  34.         objWs.Worksheets(strShtName).Cells(1, intCol + 1) = fld.Name
  35.     Next intCol
  36.     ' Now the actual data
  37.     intRow = 2
  38.     Do Until rs.EOF
  39.         For intCol = 0 To rs.Fields.Count - 1
  40.             objWs.Worksheets(strShtName).Cells(intRow, intCol + 1) = _
  41.             rs.Fields(intCol).Value
  42.         Next intCol
  43.         rs.MoveNext
  44.         intRow = intRow + 1
  45.     Loop

  46.     ' Make the worksheet visible
  47.     objXL.Visible = True
  48.     rs.Close
  49.     Set rs = Nothing
  50. End Sub
復(fù)制代碼
  1. Private Sub Command0_Click()
  2.     QueryToExcel "要導(dǎo)出的查詢(表)名", "工作簿名", "工作表名"
  3. End Sub
復(fù)制代碼

本帖子中包含更多資源

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

x
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享分享 分享淘帖 訂閱訂閱
2#
發(fā)表于 2012-7-22 15:05:54 | 只看該作者
哎,不錯不錯,簡化成函數(shù)了,以往我都是引用紅塵版主那個導(dǎo)出excel的例子,你的比紅塵版主的要簡單些,紅塵版主對錯誤的處理要全面些。
3#
發(fā)表于 2012-7-22 16:35:30 | 只看該作者
數(shù)據(jù)量大的話,建議用數(shù)組的方式給單元格賦值
4#
發(fā)表于 2012-7-23 08:33:41 | 只看該作者
用CopyFromRecordSet方法,速度要更加快.

點評

贊同這個觀點!  發(fā)表于 2012-7-24 08:23
5#
發(fā)表于 2012-7-23 08:59:15 | 只看該作者
非常感謝,這正是我想要的。
6#
發(fā)表于 2012-7-23 10:12:54 | 只看該作者
非常感謝!{:soso_e163:}
7#
發(fā)表于 2013-4-11 15:07:25 | 只看該作者
測試一下,顯示編譯錯誤:找不到工程或庫!?
Sub QueryToExcel(ByVal strQueryName As String, ByVal xlsName As String, ByVal _
                                                                        strShtName As String)
8#
 樓主| 發(fā)表于 2013-4-11 17:59:52 | 只看該作者
lin2003_lin 發(fā)表于 2013-4-11 15:07
測試一下,顯示編譯錯誤:找不到工程或庫?
Sub QueryToExcel(ByVal strQueryName As String, ByVal xls ...

需要引用Microsoft Excel 11.0 Object Library
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則

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

GMT+8, 2025-7-13 04:56 , Processed in 0.183595 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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