Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4584|回复: 15

[已解决]导入数据溢出问题

[复制链接]
发表于 2014-3-16 07:30 | 显示全部楼层 |阅读模式
本帖最后由 张雄友 于 2014-3-16 09:04 编辑

导入数据溢出问题。
最佳答案
2014-3-16 08:26
  1. Sub ADOQuery()
  2.     Dim AdoConn As Object, AdoRst As Object
  3.     Dim strConn$, strSQL$
  4.     Dim t#
  5.     t = Timer
  6.     Set AdoConn = CreateObject("ADODB.Connection")
  7.     strSQL = "select  *  from Result.txt"
  8.     strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & Application.PathSeparator & _
  9.               ";Extended Properties='text;HDR=Yes;FMT=Delimited';"
  10.     With AdoConn
  11.         '.CursorLocation = 3
  12.         .Mode = 1
  13.         .ConnectionString = strConn
  14.         .Open
  15.     End With
  16.     Application.ScreenUpdating = False
  17.     Range("a1").CurrentRegion.ClearContents
  18.     Dim i As Long
  19.     Set AdoRst = AdoConn.Execute(strSQL)
  20.     i = 1
  21.     Do While Not AdoRst.EOF
  22.         Cells(1, i).CopyFromRecordset AdoRst, Rows.Count
  23.         i = i + 1
  24.     Loop
  25.     t = Timer - t
  26.     Application.ScreenUpdating = True
  27.     MsgBox "ok" & vbCr & "一共用时 " & t & " 秒"
  28. End Sub
复制代码

导入数据溢出问题.rar

639.25 KB, 下载次数: 13

发表于 2014-3-16 08:03 | 显示全部楼层
我这电脑上打开EXCEL直接挂掉了。
超过最大行了,你就数据重组吧。

评分

参与人数 1 +3 收起 理由
张雄友 + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-3-16 08:10 | 显示全部楼层
hwc2ycy 发表于 2014-3-16 08:03
我这电脑上打开EXCEL直接挂掉了。
超过最大行了,你就数据重组吧。

是的,执行代码都要很长时间,怎么修改好?
回复

使用道具 举报

发表于 2014-3-16 08:26 | 显示全部楼层    本楼为最佳答案   
  1. Sub ADOQuery()
  2.     Dim AdoConn As Object, AdoRst As Object
  3.     Dim strConn$, strSQL$
  4.     Dim t#
  5.     t = Timer
  6.     Set AdoConn = CreateObject("ADODB.Connection")
  7.     strSQL = "select  *  from Result.txt"
  8.     strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & Application.PathSeparator & _
  9.               ";Extended Properties='text;HDR=Yes;FMT=Delimited';"
  10.     With AdoConn
  11.         '.CursorLocation = 3
  12.         .Mode = 1
  13.         .ConnectionString = strConn
  14.         .Open
  15.     End With
  16.     Application.ScreenUpdating = False
  17.     Range("a1").CurrentRegion.ClearContents
  18.     Dim i As Long
  19.     Set AdoRst = AdoConn.Execute(strSQL)
  20.     i = 1
  21.     Do While Not AdoRst.EOF
  22.         Cells(1, i).CopyFromRecordset AdoRst, Rows.Count
  23.         i = i + 1
  24.     Loop
  25.     t = Timer - t
  26.     Application.ScreenUpdating = True
  27.     MsgBox "ok" & vbCr & "一共用时 " & t & " 秒"
  28. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
张雄友 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-3-16 08:27 | 显示全部楼层
主要是文本文件比较大,40多M用记事本打开直接挂了。
你看看这个代码你要多少秒
回复

使用道具 举报

发表于 2014-3-16 08:30 | 显示全部楼层
57s
回复

使用道具 举报

 楼主| 发表于 2014-3-16 08:33 | 显示全部楼层
hwc2ycy 发表于 2014-3-16 08:30
57s

我的32秒,但是答案不正确的。第一个数0000001 都没有提取出来。
回复

使用道具 举报

 楼主| 发表于 2014-3-16 09:03 | 显示全部楼层
HDR=NO ,即可,看漏眼了谢谢。
回复

使用道具 举报

 楼主| 发表于 2014-3-16 09:10 | 显示全部楼层
hwc2ycy 发表于 2014-3-16 08:30
57s

.CursorLocation = 3  是什么意思?启用与不启用有什么区别?
回复

使用道具 举报

发表于 2014-3-16 10:17 | 显示全部楼层
先学习一下,这个基本上不太明白
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 16:23 , Processed in 1.707057 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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