• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    用vba实现将记录集输出到Excel模板

    复制代码 代码如下:

    '************************************************ 
    '** 函数名称:  ExportTempletToExcel 
    '** 函数功能:  将记录集输出到 Excel 模板 
    '** 参数说明: 
    '**            strExcelFile         要保存的 Excel 文件 
    '**            strSQL               查询语句,就是要导出哪些内容 
    '**            strSheetName         工作表名称 
    '**            adoConn              已经打开的数据库连接 
    '** 函数返回: 
    '**            Boolean 类型 
    '**            True                 成功导出模板 
    '**            False                失败 
    '** 参考实例: 
    '**            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                       ' 记录数 
       Dim intFieldCount                As Integer                    ' 字段数 
       Dim strFields                    As String                     ' 所有字段名 
       Dim i                            As Integer 

       Dim exlApplication               As Object                     ' Excel 实例 
       Dim exlBook                      As Object                     ' Excel 工作区 
       Dim exlSheet                     As Object                     ' Excel 当前要操作的工作表 

       On Error GoTo LocalErr 

       Me.MousePointer = vbHourglass 

       '// 创建 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 
             '// 取得记录总数,+ 1 是表示还有一行字段名名称信息 
             lngRecordCount = .RecordCount + 1 
             intFieldCount = .Fields.Count - 1 

             For i = 0 To intFieldCount 
                '// 生成字段名信息(vbTab 在 Excel 里表示每个单元格之间的间隔) 
                strFields = strFields  .Fields(i).Name  vbTab 
             Next 

             '// 去掉最后一个 vbTab 制表符 
             strFields = Left$(strFields, Len(strFields) - Len(vbTab)) 

             '// 创建Excel实例 
             Set exlApplication = CreateObject(Excel.Application) 
             '// 增加一个工作区 
             Set exlBook = exlApplication.Workbooks.Add 
             '// 设置当前工作区为第一个工作表(默认会有3个) 
             Set exlSheet = exlBook.Worksheets(1) 
             '// 将第一个工作表改成指定的名称 
             exlSheet.Name = strSheetName 

             '// 清除“剪切板” 
             Clipboard.Clear 
             '// 将字段名称复制到“剪切板” 
             Clipboard.SetText strFields 
             '// 选中A1单元格 
             exlSheet.Range(A1).Select 
             '// 粘贴字段名称 
             exlSheet.Paste 

             '// 从A2开始复制记录集 
             exlSheet.Range(A2).CopyFromRecordset adoRt 
             '// 增加一个命名范围,作用是在导入时所需的范围 
             exlApplication.Names.Add strSheetName, =  strSheetName  !$A$1:$  _ 
                                      uGetColName(intFieldCount + 1)  $  lngRecordCount 
             '// 保存 Excel 文件 
             exlBook.SaveAs strExcelFile 
             '// 退出 Excel 实例 
             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 

       '// 通常字段数不会太多,所以到 26*3 目前已经够了。 
       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 

    您可能感兴趣的文章:
    • VBA中操作Excel常用方法总结
    • Excel VBA连接并操作Oracle
    • excel vba 高亮显示当前行代码
    • excel vba 限制工作表的滚动区域代码
    • 合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
    • Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
    • python requests包的request()函数中的参数-params和data的区别介绍
    • python:解析requests返回的response(json格式)说明
    • 基于python requests selenium爬取excel vba过程解析
    上一篇:VBA 中要用到的常数第1/2页
    下一篇:VBA 编程基础
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    用vba实现将记录集输出到Excel模板 用,vba,实,现将,记录,集,