一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語(yǔ)言編程技術(shù)及教程分享平臺(tái)!
分類(lèi)導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - VBA - 用vba實(shí)現(xiàn)將記錄集輸出到Excel模板

用vba實(shí)現(xiàn)將記錄集輸出到Excel模板

2020-05-29 13:54VBA教程網(wǎng) VBA

本文主要講解用vba實(shí)現(xiàn)將記錄集輸出到Excel模板的方法,有需要的朋友可以參考一下。

復(fù)制代碼 代碼如下:


'************************************************ 
'** 函數(shù)名稱(chēng):  ExportTempletToExcel 
'** 函數(shù)功能:  將記錄集輸出到 Excel 模板 
'** 參數(shù)說(shuō)明: 
'**            strExcelFile         要保存的 Excel 文件 
'**            strSQL               查詢(xún)語(yǔ)句,就是要導(dǎo)出哪些內(nèi)容 
'**            strSheetName         工作表名稱(chēng) 
'**            adoConn              已經(jīng)打開(kāi)的數(shù)據(jù)庫(kù)連接 
'** 函數(shù)返回: 
'**            Boolean 類(lèi)型 
'**            True                 成功導(dǎo)出模板 
'**            False                失敗 
'** 參考實(shí)例: 
'**            Call ExportTempletToExcel(c:\\text.xls,查詢(xún)語(yǔ)句,工作表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 記錄集對(duì)象 
   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 是表示還有一行字段名名稱(chēng)信息 
         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è)工作表改成指定的名稱(chēng) 
         exlSheet.Name = strSheetName 

         '// 清除“剪切板” 
         Clipboard.Clear 
         '// 將字段名稱(chēng)復(fù)制到“剪切板” 
         Clipboard.SetText strFields 
         '// 選中A1單元格 
         exlSheet.Range(A1).Select 
         '// 粘貼字段名稱(chēng) 
         exlSheet.Paste 

         '// 從A2開(kāi)始復(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: 
   '********************************************* 
   '** 釋放所有對(duì)象 
   '********************************************* 
   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 

 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产午夜视频在线观看网站 | 亚洲日韩欧美一区二区在线 | 九九久久国产精品免费热6 九九精品视频一区二区三区 | 色婷婷综合缴情综六月 | 亚洲精品国产精品精 | 亚洲国产货青视觉盛宴 | 逼毛片| 国产欧美一区二区三区免费看 | 成人国产午夜在线视频 | 久久AV喷吹AV高潮欧美 | 91传媒制片厂制作传媒破解版 | 513热点网| 国产yw193.㎝m在线观看 | 草逼视频网站 | 欧美日韩国产一区二区三区在线观看 | 99热自拍 | 精品亚洲欧美中文字幕在线看 | 欧美亚洲一区二区三区在线 | 日本-区二区三区免费精品 日本破处 | 好逼天天有 | 好姑娘完整版在线观看中文 | 精新精新国产自在现拍 | 免费日本在线视频 | 激情五月开心 | 亚洲精品在线免费 | 欧美破处女视频 | 亚洲国产成人综合 | 日本情趣视频 | 久久99精品国产免费观看 | 国产日韩欧美色视频色在线观看 | 操穴片| 猛h辣h高h文湿重口 门房秦大爷在线阅读 | 黄蓉h系列| 青草国内精品视频在线观看 | 国产人成精品午夜在线观看 | 丰满大乳欲妇三级k8 | 日本精品一区二区在线播放 | 99热这里只有精品在线播放 | 大学生情侣在线 | 暖暖视频高清图片免费完整版 | 女教师巨大乳孔中文字幕免费 |