ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 同一路径下的txt文档批量转换为excel文件

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-18 17:16 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
新手小白,想要快速将统一个路径下的多个txt文档都转化为excel文件,txt的数据内容要分列后粘贴到excel表的指定位置,麻烦大神们帮忙处理一下~~
样例数据和需要实现的效果见附件

实现效果.zip

8.28 KB, 下载次数: 9

样例数据.zip

264 Bytes, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2024-2-18 20:11 | 显示全部楼层
Option Explicit
Sub test()
    Dim strFileName$, strPath$, strTxtName$, strTxt$
    Dim vResult$(), ar, br, y&, r&
   
    DoApp False
   
    ReDim vResult(1 To 10 ^ 4, 1 To 6)

    strPath = ThisWorkbook.Path & "\"
    strFileName = Dir(strPath & "*.txt")
    Do Until strFileName = ""
        strTxtName = Left(strFileName, InStrRev(strFileName, ".") - 1)
        strTxt = ReadFromTextFile(ThisWorkbook.Path & "\" & strFileName)
        ar = Split(strTxt, vbCr)
        For y = 0 To UBound(ar)
            br = Split(ar(y), ",")
            r = r + 1
            vResult(r, 1) = br(0): vResult(r, 3) = br(4)
            vResult(r, 4) = br(3): vResult(r, 6) = br(2)
            vResult(r, 5) = strTxtName
        Next y
        strFileName = Dir
    Loop
   
    [A1].CurrentRegion.Offset(1).ClearContents
    If r Then [A2].Resize(r, UBound(vResult, 2)) = vResult
   
    DoApp
    Beep
End Sub
Function DoApp(Optional b As Boolean = True)
    With Application
        .ScreenUpdating = b
        .DisplayAlerts = b
        .Calculation = -b * 30 - 4135
    End With
End Function
Function ReadFromTextFile$(ByVal strFullName$, Optional ByVal strCharSet$ = "UTF-8")
    With CreateObject("ADODB.Stream")
        .Type = 2
        .Mode = 3
        .Charset = strCharSet
        .Open
        .LoadFromFile strFullName
        ReadFromTextFile = .ReadText
        .Close
    End With
End Function

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-18 20:13 | 显示全部楼层
请参考附件。。。

实现效果.rar

19.64 KB, 下载次数: 19

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-19 09:12 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
附件供参考。。。
{AC732893-FEEB-49b1-9B88-1C7911DC8009}.png

批量导入txt文件.7z

25.33 KB, 下载次数: 31

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-19 09:14 | 显示全部楼层
本帖最后由 ykcbf1100 于 2024-2-19 13:22 编辑

代码供参考。。。
  1. Sub ykcbf()  '//2024.2.19,多个txt批量转换成excel
  2.     Set fso = CreateObject("scripting.filesystemobject")
  3.     Application.ScreenUpdating = False
  4.     Application.DisplayAlerts = False
  5.     p = ThisWorkbook.Path & ""
  6.     On Error Resume Next
  7.     For Each f In fso.GetFolder(p).Files
  8.         If f.Name Like "*.txt" Then
  9.             fn = fso.GetBaseName(f)
  10.             zrr = Split(ReadUTFText(f), Chr(13))
  11.             ReDim brr(1 To 1000, 1 To 6)
  12.             m = 0
  13.             For i = 0 To UBound(zrr)
  14.                 If zrr(i) <> Empty Then
  15.                     s = WorksheetFunction.Trim(zrr(i))
  16.                     b = Split(s, ",")
  17.                     m = m + 1
  18.                     brr(m, 1) = b(0)
  19.                     brr(m, 3) = b(4)
  20.                     brr(m, 4) = b(1)
  21.                     brr(m, 5) = fn
  22.                     brr(m, 6) = b(2)
  23.                 End If
  24.             Next
  25.             Application.SheetsInNewWorkbook = 1
  26.             Set wb = Workbooks.Add
  27.             With wb.Sheets(1)
  28.                 .Columns(4).NumberFormatLocal = "@"
  29.                 .[a1:f1] = Array("中间号码", "省份", "省份代码", "唯一编码", "文件名称", "绑定时间")
  30.                 .[a2].Resize(m, 6) = brr
  31.                 With .[a1].Resize(m + 1, 6)
  32.                     .Borders.LineStyle = 1
  33.                     .HorizontalAlignment = xlCenter
  34.                     .VerticalAlignment = xlCenter
  35.                     .EntireColumn.AutoFit
  36.                 End With
  37.                 .SaveAs p & fn
  38.                 .Close 1
  39.             End With
  40.         End If
  41.     Next f
  42.     Application.ScreenUpdating = True
  43.     MsgBox "OK!"
  44. End Sub
复制代码


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-19 09:50 | 显示全部楼层
ykcbf1100 发表于 2024-2-19 09:12
附件供参考。。。

十分感谢,一下就搞定了~\(≥▽≤)/~

TA的精华主题

TA的得分主题

发表于 2024-2-19 11:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Sub 导入txt文件()
Dim s() As String, arr(), brr, i&, j&
ActiveSheet.[a1].CurrentRegion.Offset(1).ClearContents
ReDim arr(1 To 50000, 1 To 6)
lj = ThisWorkbook.Path & "\"
f = Dir(lj & "*.txt")
Do While f <> ""
    Open lj & f For Input As #1
    s = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCr)
    Close #1
    For i = 0 To UBound(s)  '请确认文本文件最后一行为空行
        n = n + 1
        brr = Split(s(i), ",")
        arr(n, 1) = brr(0)
        arr(n, 3) = UBound(brr)
        arr(n, 4) = brr(1)
        arr(n, 5) = Split(f, ".")(0)
        arr(n, 6) = brr(2)
    Next i
f = Dir
Loop
Columns("D:D").NumberFormatLocal = "@"
[a2].Resize(n, 6) = arr
End Sub

TA的精华主题

TA的得分主题

发表于 2024-2-19 11:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-2-19 13:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 fzxba 于 2024-2-19 13:50 编辑
gwjkkkkk 发表于 2024-2-18 20:13
请参考附件。。。

gwjkkkkk 兄,vResult(r, 4) = br(3) 应是  vResult(r, 4) = br(1) ,瞧你粗心的,此贴回复你质量高……

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-2-19 18:52 | 显示全部楼层
fzxba 发表于 2024-2-19 13:29
gwjkkkkk 兄,vResult(r, 4) = br(3) 应是  vResult(r, 4) = br(1) ,瞧你粗心的,此贴回复你质量高……

对的,fzxba兄,你是大师级的,很多代码都是抄你的,就是徒弟交作业不认真,哈哈

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-18 19:31 , Processed in 0.047849 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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