ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 11777|回复: 6

[求助] access只能导出6万+的数据到excel

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-4-2 23:29 | 显示全部楼层 |阅读模式
有2个问题
1、当access从excel读取数据时(链接表),如果excel某列又有数值又有文本,access会根据哪类格式的数量多少来决定导入成什么格式,当数值格式的量较多时,那些文本是导不进去的,我知道可以先在excel里面用vba将该列强制转换成文本格式,然后再导,当做完数据处理导出到excel后,再用vba将格式转换成数值,这样挺麻烦,有没有其他方法

2、用access导出数据到excel时,如果数据多于6万多,就提示不能导出成功。说建议分成几个文件,这是为什么,有没有解决办法。

TA的精华主题

TA的得分主题

发表于 2014-4-3 07:42 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请问,楼主用的ACCESS和EXCEL是哪个版本的?

TA的精华主题

TA的得分主题

发表于 2014-4-3 07:50 | 显示全部楼层
问题1:
在EXCEL中,如果要把文本型数字转换成数值,操作很简单,通常并不需要用VBA就可以做到。
方法有两种:①、用“分列”的方法,默认就是转换为数值;②复制空白单元格、并定位常量数字型单元格、再选择性粘贴(选择相加的运算)

问题2:
EXCEL2003只有66536(即256*256)行,超过了就会有提示。解决的办法是使用EXCEL2007或更新版本,可以支持100万行以上(1024*1024行)

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-3 10:33 | 显示全部楼层
cbtaja 发表于 2014-4-3 07:50
问题1:
在EXCEL中,如果要把文本型数字转换成数值,操作很简单,通常并不需要用VBA就可以做到。
方法有两 ...

问题1:
实际工作中的要求是从好几个表(a/b/c/d)中匹配字段进总表(表1),我的做法是通过vba整理a/b/c/d的数据进入一张表e,vba继续整理e表字段,将日期字段强制转换成文本,继续整理表1字段,将日期字段强制转换成文本。(因为日期字段有部分数据不是日期,所以做这个操作)
然后将表e和表1导入access,通过查询匹配,再导出成excel,再通过vba将文本强制转换成日期,工作完成
不知道,有没有更好的方法。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-4-3 10:34 | 显示全部楼层
zez 发表于 2014-4-3 07:42
请问,楼主用的ACCESS和EXCEL是哪个版本的?

我用的都是07的版本啊。应该有100万+的容量啊

TA的精华主题

TA的得分主题

发表于 2014-4-3 11:08 | 显示全部楼层
wgx711 发表于 2014-4-3 10:34
我用的都是07的版本啊。应该有100万+的容量啊

总行数有多少?内存足够吗?
实在不行,那就分成几批次导出吧——当然,可以用VBA来连接EXCEL和ACCESS,自动分批导出,然后合并。

TA的精华主题

TA的得分主题

发表于 2014-4-3 12:14 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
VBA+ADO查询请参考:
  1. Sub Access20072010查询()
  2. '引用Microsoft ActiveX Data Objects 2.x Library
  3.     Dim cnn As New ADODB.Connection
  4.     Dim rst As New ADODB.Recordset
  5.     Dim myPath As String
  6.     Dim SQL As String
  7.     Dim i As Integer
  8.     myPath = ThisWorkbook.Path & "\数据库.accdb"
  9.     cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & myPath
  10.     SQL = "SELECT * FROM 数据表"
  11.     rst.Open SQL, cnn, adOpenKeyset, adLockOptimistic
  12.     Cells.ClearContents
  13.     For i = 0 To rst.Fields.Count - 1
  14.         Cells(1, i + 1) = rst.Fields(i).Name
  15.     Next
  16.     Range("A2").CopyFromRecordset rst
  17.     rst.Close
  18.     cnn.Close
  19.     Set rst = Nothing
  20.     Set cnn = Nothing
  21. End Sub
复制代码
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-17 12:38 , Processed in 0.029316 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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