用vba實(shí)現(xiàn)將記錄集輸出到Excel模板
'************************************************
'** 函數(shù)名稱: ExportTempletToExcel
'** 函數(shù)功能: 將記錄集輸出到 Excel 模板
'** 參數(shù)說明:
'** strExcelFile 要保存的 Excel 文件
'** strSQL 查詢語句,就是要導(dǎo)出哪些內(nèi)容
'** strSheetName 工作表名稱
'** adoConn 已經(jīng)打開的數(shù)據(jù)庫連接
'** 函數(shù)返回:
'** Boolean 類型
'** True 成功導(dǎo)出模板
'** False 失敗
'** 參考實(shí)例:
'** Call ExportTempletToExcel(c:\\text.xls,查詢語句,工作表1,adoConn)
'************************************************
Private Function ExportTempletToExcel(ByVal strExcelFile As String, _
ByVal strSQL As String, _
ByVal strSheetName As String, _
ByVal adoConn As Object) As Boolean
Dim adoRt As Object
Dim lngRecordCount As Long ' 記錄數(shù)
Dim intFieldCount As Integer ' 字段數(shù)
Dim strFields As String ' 所有字段名
Dim i As Integer
Dim exlApplication As Object ' Excel 實(shí)例
Dim exlBook As Object ' Excel 工作區(qū)
Dim exlSheet As Object ' Excel 當(dāng)前要操作的工作表
On Error GoTo LocalErr
Me.MousePointer = vbHourglass
'// 創(chuàng)建 ADO 記錄集對象
Set adoRt = CreateObject(ADODB.Recordset)
With adoRt
.ActiveConnection = adoConn
.CursorLocation = 3 'adUseClient
.CursorType = 3 'adOpenStatic
.LockType = 1 'adLockReadOnly
.Source = strSQL
.Open
If .EOF And .BOF Then
ExportTempletToExcel = False
Else
'// 取得記錄總數(shù),+ 1 是表示還有一行字段名名稱信息
lngRecordCount = .RecordCount + 1
intFieldCount = .Fields.Count - 1
For i = 0 To intFieldCount
'// 生成字段名信息(vbTab 在 Excel 里表示每個(gè)單元格之間的間隔)
strFields = strFields & .Fields(i).Name & vbTab
Next
'// 去掉最后一個(gè) vbTab 制表符
strFields = Left$(strFields, Len(strFields) - Len(vbTab))
'// 創(chuàng)建Excel實(shí)例
Set exlApplication = CreateObject(Excel.Application)
'// 增加一個(gè)工作區(qū)
Set exlBook = exlApplication.Workbooks.Add
'// 設(shè)置當(dāng)前工作區(qū)為第一個(gè)工作表(默認(rèn)會(huì)有3個(gè))
Set exlSheet = exlBook.Worksheets(1)
'// 將第一個(gè)工作表改成指定的名稱
exlSheet.Name = strSheetName
'// 清除“剪切板”
Clipboard.Clear
'// 將字段名稱復(fù)制到“剪切板”
Clipboard.SetText strFields
'// 選中A1單元格
exlSheet.Range(A1).Select
'// 粘貼字段名稱
exlSheet.Paste
'// 從A2開始復(fù)制記錄集
exlSheet.Range(A2).CopyFromRecordset adoRt
'// 增加一個(gè)命名范圍,作用是在導(dǎo)入時(shí)所需的范圍
exlApplication.Names.Add strSheetName, = & strSheetName & !$A$1:$ & _
uGetColName(intFieldCount + 1) & $ & lngRecordCount
'// 保存 Excel 文件
exlBook.SaveAs strExcelFile
'// 退出 Excel 實(shí)例
exlApplication.Quit
ExportTempletToExcel = True
End If
'adStateOpen = 1
If .State = 1 Then
.Close
End If
End With
LocalErr:
'*********************************************
'** 釋放所有對象
'*********************************************
Set exlSheet = Nothing
Set exlBook = Nothing
Set exlApplication = Nothing
Set adoRt = Nothing
'*********************************************
If Err.Number <> 0 Then
Err.Clear
End If
Me.MousePointer = vbDefault
End Function
'// 取得列名
Private Function uGetColName(ByVal intNum As Integer) As String
Dim strColNames As String
Dim strReturn As String
'// 通常字段數(shù)不會(huì)太多,所以到 26*3 目前已經(jīng)夠了。
strColNames = A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z, & _
AA,AB,AC,AD,AE,AF,AG,AH,AI,AJ,AK,AL,AM,AN,AO,AP,AQ,AR,AS,AT,AU,AV,AW,AX,AY,AZ, & _
BA,BB,BC,BD,BE,BF,BG,BH,BI,BJ,BK,BL,BM,BN,BO,BP,BQ,BR,BS,BT,BU,BV,BW,BX,BY,BZ
strReturn = Split(strColNames, ,)(intNum - 1)
uGetColName = strReturn
End Function
上一篇:右鍵發(fā)送(sendto),創(chuàng)建快捷方式到自定義的位置
欄 目:vb
下一篇:修復(fù)Windows上面的WScript的腳本(.vbs)不能執(zhí)行了
本文標(biāo)題:用vba實(shí)現(xiàn)將記錄集輸出到Excel模板
本文地址:http://mengdiqiu.com.cn/a1/vb/7957.html
您可能感興趣的文章
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語法速查及實(shí)例說明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第十四課在VBScript中使用對象
- 01-10VBScript教程 第八課 使用循環(huán)語句
- 01-10VBS教程:正則表達(dá)式簡介 -后向引用


閱讀排行
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實(shí)例說明
隨機(jī)閱讀
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時(shí)候用欄目交叉功能?
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10delphi制作wav文件的方法
- 04-02jquery與jsp,用jquery
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢data目錄下的sessions文件夾有什