设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2203|回复: 1
打印 上一主题 下一主题

[模块/函数] 使用EXCEL获取ACCESS MDB数据的技巧

[复制链接]
跳转到指定楼层
1#
发表于 2012-6-20 09:23:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
增加点人气

【功能简介】
    MS ACCESS虽然提供有数据导出的功能,但是如果MDB有大量数据需要导出到EXCEL表中时,
  会遇到超过EXCEL表格的最大上限值,而无法打开。
    这时候,使用EXCEL VBA程序,通过ADODB.Connection连接,就可以把数据进行灵活分割,
  从而实现导出数据的功能。
  1. Sub MDB2XLS()
  2.     Dim dbCon As ADODB.Connection
  3.     Dim dbRes As ADODB.Recordset

  4.     '连接MDB
  5.     Set dbCon = New ADODB.Connection
  6.     On Error Resume Next
  7.     dbCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMDBName & ";"
  8.     If Err.Number <> 0 Then
  9.         MsgBox vbCrLf & Err.Description
  10.         Err.Clear
  11.         On Error GoTo 0
  12.         Set dbCon = Nothing
  13.         Exit Sub
  14.     End If
  15.     'SQL处理
  16.     '(省略)
  17.     strSQL="SELECT * FROM test;"
  18.    
  19.     '从MDB中检索数据
  20.     Set dbRes = New ADODB.Recordset
  21.     dbRes.Open strSQL, dbCon, adOpenKeyset, adLockReadOnly
  22.     On Error GoTo 0
  23.     If dbRes.EOF Then
  24.         MsgBox "没有检索到数据。"
  25.         dbRes.Close
  26.         Set dbRes = Nothing
  27.         dbCon.Close
  28.         Set dbCon = Nothing
  29.         Exit Sub
  30.     End If

  31.     Set SH = ActiveSheet
  32.     With SH
  33.         .Cells.ClearContents
  34.         '在EXCEL表中生成字段名
  35.         For COL = 1 To dbRes.Fields.Count
  36.             .Cells(1, COL).Value = dbRes.Fields(COL - 1).Name
  37.             '根据MDB中数据属性,修改EXCEL表中的对应属性
  38.             With .Columns(COL)
  39.                 Select Case dbRes.Fields(COL - 1).Type
  40.                         'case xxx
  41.                         '省略
  42.                     Case 7                  ' 日期格式
  43.                         dteDate = dbRes.Fields(COL - 1).Value
  44.                         lngDate = CLng(dteDate)
  45.                         If lngDate <> dteDate Then
  46.                             .NumberFormatLocal = "yyyy/mm/dd hh:mm"
  47.                         Else
  48.                             .NumberFormatLocal = "yyyy/mm/dd"
  49.                         End If
  50.                         .HorizontalAlignment = xlHAlignCenter
  51.                     Case Else               ' 其他类型都当作文字串
  52.                         .NumberFormatLocal = "@"
  53.                         .HorizontalAlignment = xlHAlignLeft
  54.                 End Select
  55.             End With
  56.         Next COL
  57.         '一次性数据拷贝
  58.         .Range("A2").CopyFromRecordset dbRes
  59.     End With
  60.     dbRes.Close
  61.     Set dbRes = Nothing
  62.     dbCon.Close
  63.     Set dbCon = Nothing
  64. End Sub
复制代码

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖1 订阅订阅
2#
发表于 2015-1-26 23:13:08 | 只看该作者
学习了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-1 00:39 , Processed in 0.093340 second(s), 27 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表