ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 关于批量导入txt文本的问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-11-20 19:28 | 显示全部楼层 |阅读模式
本帖最后由 dtxczjzmp 于 2013-11-20 19:32 编辑

把近两佰个的txt文件批量导入excel 工作簿,并且每个txt文件导成一张工作表,工作表以txt文件名命名,具体导成样式祥见附件 r20131101.rar (12.17 KB, 下载次数: 20) ,即导成附件的工作簿一样,请高手帮助,谢谢!


该贴已经同步到 dtxczjzmp的微博

TA的精华主题

TA的得分主题

发表于 2013-11-20 20:28 | 显示全部楼层
本帖最后由 曼婷 于 2013-11-20 20:38 编辑

弄了一下,试下行不。基本思路是:1、按读ECXEL一样,读取TXT。2、将每一行的数据拆分出来。3、改表的名字。

Book1.rar

23.98 KB, 下载次数: 17

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-11-20 21:00 | 显示全部楼层
  1. Sub test()
  2.   Dim fso As New FileSystemObject
  3.   Dim cnn As New ADODB.Connection
  4.   Dim rs As New ADODB.Recordset
  5.   Dim sql As String
  6.   Dim strconn As String
  7.   Dim ws As Worksheet
  8.   
  9.   If MsgBox("提取数据将删除本工作簿除[总表]以外的其他数据表并重新生成,确定提取吗?", vbOKCancel + vbCritical + vbDefaultButton2, "提示") = vbCancel Then
  10.     Exit Sub
  11.   End If
  12.   
  13.   Dim mybook As String
  14.   Dim mysheet As String
  15.   
  16.   Application.DisplayAlerts = False
  17.   Application.ScreenUpdating = False
  18.   
  19.   For Each ws In Worksheets
  20.     If ws.Name <> "总表" Then
  21.       ws.Delete
  22.     End If
  23.   Next
  24.   
  25.   mybook = ThisWorkbook.FullName
  26.   mysheet = "sheet1"
  27.   
  28.   strconn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.Path & ";Extended Properties=""TEXT;HDR=YES;IMEX=1"";"
  29.   cnn.Open strconn
  30.   
  31.   Set f = fso.GetFolder(ThisWorkbook.Path)
  32.   
  33.   For Each wj In f.Files
  34.     If wj.Name Like "*.txt" Then
  35.       Set ws = Worksheets.Add(after:=Worksheets(Worksheets.Count))
  36.       ws.Name = Left(wj.Name, Len(wj.Name) - 4)
  37.       sql = "select * from " & wj.Name
  38.       rs.Open sql, cnn, adOpenKeyset, adLockOptimistic
  39.       For i = 0 To rs.Fields.Count - 1
  40.         ws.Cells(1, i + 1) = rs.Fields(i).Name
  41.       Next
  42.       ws.Range("a2").CopyFromRecordset rs
  43.       With Columns("A:A")
  44.         .NumberFormatLocal = "0_ "
  45.         .EntireColumn.AutoFit
  46.       End With
  47.       rs.Close
  48.     End If
  49.   Next
  50.       
  51.   Application.DisplayAlerts = True
  52.   Application.ScreenUpdating = True
  53.   cnn.Close
  54.   Set fso = Nothing
  55.   Set cnn = Nothing
  56. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2013-11-20 21:02 | 显示全部楼层
使用ADO+SQL做的,不完全打开文件提取数据,在文件数量多时速度比较快,你试一试。

r20131101.rar

41.64 KB, 下载次数: 34

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-11-22 13:05 | 显示全部楼层
chxw68 发表于 2013-11-20 21:02
使用ADO+SQL做的,不完全打开文件提取数据,在文件数量多时速度比较快,你试一试。

首先感谢您的帮助!假如导入txt文件后,在左边插入一列单位名称的值是为插入前的range("B2"),并且把第二行删除,代码该如何改? r20131101.rar (24.77 KB, 下载次数: 2)

TA的精华主题

TA的得分主题

发表于 2013-11-22 14:44 | 显示全部楼层
dtxczjzmp 发表于 2013-11-22 13:05
首先感谢您的帮助!假如导入txt文件后,在左边插入一列单位名称的值是为插入前的range("B2"),并且把第二行 ...

是导入文件后,在B列插入一列单位名称吗?单位名称是什么?要删除表格第二行吗?

TA的精华主题

TA的得分主题

发表于 2013-11-22 18:16 | 显示全部楼层
chxw68 发表于 2013-11-20 21:00

Dim fso As New FileSystemObject  用户类型未定义,要引用哪个项目的?

TA的精华主题

TA的得分主题

发表于 2013-11-22 18:29 | 显示全部楼层
张雄友 发表于 2013-11-22 18:16
Dim fso As New FileSystemObject  用户类型未定义,要引用哪个项目的?

在VBE窗口中,单击“工具”菜单,执行其中的“引用”菜单,打开“引用-VBAProject"对话框,选择其中的“Microsoft Scripting Runtime",单击确定。

TA的精华主题

TA的得分主题

发表于 2013-11-22 18:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
chxw68 发表于 2013-11-22 18:29
在VBE窗口中,单击“工具”菜单,执行其中的“引用”菜单,打开“引用-VBAProject"对话框,选择其中的“M ...

引用后,又到这句未定义了:Dim cnn As New ADODB.Connection

TA的精华主题

TA的得分主题

发表于 2013-11-22 19:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
张雄友 发表于 2013-11-22 18:37
引用后,又到这句未定义了:Dim cnn As New ADODB.Connection

引用“Microsoft Active Data Objects 2.8 Library"
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 12:32 , Processed in 0.041055 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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