ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 文本文档导入

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-5-9 10:44 | 显示全部楼层 |阅读模式
请老师用VBA,指导文本文档导入,谢谢!

文本文档导入Excel.zip

10.67 KB, 下载次数: 29

TA的精华主题

TA的得分主题

发表于 2024-5-9 14:14 | 显示全部楼层
本帖最后由 baofa2 于 2024-5-10 12:23 编辑
  1. Sub test1() '不严谨,更正一下
  2.   Application.ScreenUpdating = False
  3.   Dim results(1 To 50000, 1 To 50) As String, ar, br
  4.   Dim i As Long, j As Long, k As Long, cnt As Long, col As Long, wks As Worksheet
  5.   Dim strPath As String, strFile As String, strText As String, strName As String
  6.   strPath = ThisWorkbook.Path & "\"
  7.   strFile = Dir(strPath & "*.txt")
  8.   While Len(strFile)
  9.     k = k + 1
  10.     strFile = Dir
  11.   Wend
  12.   On Error Resume Next
  13.   strFile = Dir(strPath & "*.txt")
  14.   While Len(strFile)
  15.     strText = Replace(ReadFromTextFile(strPath & strFile, "UTF-8"), Chr(32), vbNullString)
  16.     ar = Split(strText, vbLf)
  17.     cnt = 0
  18.     col = 0
  19.     For i = 0 To UBound(ar)
  20.       If Len(ar(i)) Then
  21.         cnt = cnt + 1
  22.         br = Split(ar(i), vbTab)
  23.         For j = 0 To UBound(br)
  24.           results(cnt, j + 1) = br(j)
  25.         Next
  26.         If j > col Then col = j   '据数据这个不能少
  27.       End If
  28.     Next
  29.     If k = 1 Then strName = "导入文本" Else strName = Split(strFile, ".txt")(0)
  30.     Set wks = Worksheets(strName)
  31.     If Err.Number Then
  32.       Err.Clear
  33.       Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = strName
  34.     End If
  35.     With Worksheets(strName)
  36.       .Cells.Clear
  37.       .Range("A1").Resize(cnt, col) = results
  38.     End With
  39.     Erase results     '据数据这个不能少
  40.     strFile = Dir
  41.   Wend
  42.   Set wks = Nothing
  43.   Application.ScreenUpdating = True
  44.   Beep
  45. End Sub

  46. Function ReadFromTextFile(ByVal strFullName As String, Optional ByVal strCharSet As String = "UTF-8") As String
  47.   With CreateObject("ADODB.Stream")
  48.     .Type = 2
  49.     .Mode = 3
  50.     .Charset = strCharSet
  51.     .Open
  52.     .LoadFromFile strFullName
  53.     ReadFromTextFile = .ReadText
  54.     .Close
  55.   End With
  56. End Function
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-5-9 18:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-9 18:40 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-9 20:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
关键字:ReadAll
GIF 2024-05-09 20-20-06.gif

文本文档导入Excel.zip

20.91 KB, 下载次数: 11

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-9 20:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Sub Limonet()
    Dim WshShell As Object, Arr As Variant, i%, k%, Brr As Variant
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.currentdirectory = ThisWorkbook.Path
    Arr = Split(WshShell.Exec("Powershell get-childitem -file *.txt -name").StdOut.ReadAll, Chr(13) & Chr(10))
    For i = 0 To UBound(Arr) - 1
        If UBound(Arr) > 1 Then Worksheets.Add(after:=Sheets(Sheets.Count)).Name = Split(Arr(i), ".txt")(0)
        Brr = Split(WshShell.Exec("Powershell get-content " & Arr(i)).StdOut.ReadAll, Chr(13) & Chr(10))
        For k = 0 To UBound(Brr) - 1
            Cells(k + 1, "A").Resize(1, UBound(Split(Brr(k), vbTab)) + 1) = Split(Brr(k), vbTab)
        Next k
    Next i
End Sub

TA的精华主题

TA的得分主题

发表于 2024-5-9 22:42 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-5-10 07:22 | 显示全部楼层
gwjkkkkk 发表于 2024-5-9 22:42
baofa2兄代码真漂亮,又学到了。。。

你这一说,我又检查了一下,发现几处不严谨的地方,惭愧,还是浮躁

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-10 08:00 来自手机 | 显示全部楼层
baofa2 发表于 2024-5-10 07:22
你这一说,我又检查了一下,发现几处不严谨的地方,惭愧,还是浮躁

看你的代码,很有收获

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-5-10 11:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

strPath = ThisWorkbook.Path & "\"
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-14 21:19 , Processed in 0.044548 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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