ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: yuk_yu

[求助] VB6批量读取CSV文件到access?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-1-21 10:46 | 显示全部楼层
本帖最后由 zhaogang1960 于 2013-1-21 10:49 编辑

第二个问题是个难题,ADO读取文本文件,第一个字符为0的数字都会丢失,在Recordset查询中就已经丢失了,就是说从根上就出问题了,请测试下面代码:
  1. Sub 读取csv文件试验()
  2. '引用Microsoft ActiveX Data Objects 2.x Library
  3. 'VB6批量读取CSV文件到access?
  4. 'http://club.excelhome.net/thread-973334-1-1.html
  5.     Dim cnn As New ADODB.Connection
  6.     Dim rs As New ADODB.Recordset
  7.     Dim myPath$, MyFile$, SQL$
  8.     myPath = ActiveWorkbook.Path & ""
  9.     cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='text;FMT=DELIMITED;HDR=no';Data Source=" & myPath '连接数据库
  10.     MyFile = Dir(myPath & "*.csv")
  11.     SQL = "select * from  " & MyFile
  12.     rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic
  13.     For i = 0 To rs.Fields.Count - 1
  14.         MsgBox rs.Fields(i)
  15.     Next
  16.     rs.Close
  17.     Set rs = Nothing
  18.     cnn.Close
  19.     Set cnn = Nothing
  20. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2013-1-21 10:50 | 显示全部楼层
请看附件
Get.rar (21.24 KB, 下载次数: 56)

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-21 11:09 | 显示全部楼层
本帖最后由 yuk_yu 于 2013-1-21 11:23 编辑
zhaogang1960 发表于 2013-1-21 10:50
请看附件

版主,能否用其他办法读取?我的数据例如:0110读取后变为110就完全没有意义了。可以用二进制先读取到数组,再写入access吗?

TA的精华主题

TA的得分主题

发表于 2013-1-21 11:30 | 显示全部楼层
yuk_yu 发表于 2013-1-21 11:09
版主,能否用其他办法读取?我的数据例如:0110读取后变为110就完全没有意义了。可以用二进制先读取到数组 ...

应该可以,容我想想

TA的精华主题

TA的得分主题

发表于 2013-1-21 12:50 | 显示全部楼层
yuk_yu 发表于 2013-1-21 11:09
版主,能否用其他办法读取?我的数据例如:0110读取后变为110就完全没有意义了。可以用二进制先读取到数组 ...
  1. Sub 联合查询后导入() 'VBA中测试通过
  2. '引用Microsoft ActiveX Data Objects 2.x Library
  3. 'VB6批量读取CSV文件到access?
  4. 'http://club.excelhome.net/thread-973334-1-1.html
  5.     Dim xlapp As Object
  6.     Dim cnn As New ADODB.Connection
  7.     Dim rs As New ADODB.Recordset
  8.     Dim myPath$, MyFile$, myTable$, SQL$, s$(), i&, a, strFormID$, strFormType$
  9.     Set xlapp = GetObject(, "Excel.Application") 'VB6中
  10.     myTable = "BackflushRecord"
  11.     myPath = xlapp.ActiveWorkbook.Path & ""
  12.     cnn.Open "Provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & myPath & "Database.accdb" '连接数据库
  13.     rs.Open myTable, cnn, adOpenKeyset, adLockOptimistic
  14.     MyFile = Dir(myPath & "*.csv")
  15.     With rs
  16.         Do While MyFile <> ""
  17.             strFormID = Mid(MyFile, 10, 7)
  18.             strFormType = Mid(MyFile, 1, 8)
  19.             Open myPath & MyFile For Input As #1
  20.             s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
  21.              Close #1
  22.             For i = 0 To UBound(s) - 1 '-1忽略最后一行空格
  23.                 a = Split(s(i), ",")
  24.                 .AddNew
  25.                 .Fields("FormID") = strFormID
  26.                 .Fields("FormType") = strFormType
  27.                 .Fields("ModelName") = a(0)
  28.                 .Fields("ProductionLine") = a(1)
  29.                 .Fields("OutPutQty") = a(2)
  30.                 .Fields("ModelVersion") = a(3)
  31.                 .Update
  32.             Next
  33.             MyFile = Dir()
  34.         Loop
  35.     End With
  36.     MsgBox "已经成功将文本文件数据保存为数据库!", vbInformation
  37.     rs.Close
  38.     cnn.Close
  39.     Set rs = Nothing
  40.     Set cnn = Nothing
  41. End Sub

复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-1-21 14:22 | 显示全部楼层
zhaogang1960 发表于 2013-1-21 12:54
请看附件

谢谢版主,完全解决问题!速度也很快!

TA的精华主题

TA的得分主题

发表于 2015-11-5 01:18 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2021-11-3 21:55 | 显示全部楼层

大佬,请问f1,f2,f3,f4是怎么来的?没有定义啊,直接表示csv中的列号吗?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-7-3 14:33 , Processed in 0.029552 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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