Excel精英培训网

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

TXT批量转化为EXCEL

[复制链接]
发表于 2019-9-12 16:48 | 显示全部楼层 |阅读模式
TXT批量转化为EXCEL

TXT批量转为excel问题.zip

10.4 KB, 下载次数: 26

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2019-9-12 17:53 | 显示全部楼层
Option Explicit

Dim A(1 To 10 ^ 4, 1 To 32)  '32 = 日期占1列 + 项目占1列 + GWg占30列
Dim p    '文本的路径
Dim s    '文本的个数


'入口
Sub test()
    Dim f
    s = 0
    p = ThisWorkbook.Path & "\txt\"
    f = Dir(p & "*.txt")
    Do While f <> ""
        s = s + 1
        Call test2(f)
        f = Dir
    Loop
    Rows("3:65536") = ""
    [a3].Resize(s, UBound(A, 2)) = A
End Sub


'单个文本
Sub test2(f)
    Dim B, str, j

    Open p & f For Input As #1
    B = Split(StrConv(InputB(LOF(1), 1), vbUnicode), vbCrLf)
    Close #1

    A(s, 1) = rq(B(2))
    A(s, 2) = xm(B(2))
    For j = 3 To UBound(A, 2)
        If B(j + 3) = "" Then Exit For
        A(s, j) = GWg(B(j + 3))
    Next j
End Sub


'获取日期
Function rq(ByVal x) As String
    x = Application.Trim(x)
    x = VBA.Split(x, " ")(1)
    rq = x
End Function


'获取项目
Function xm(ByVal x) As String
    x = Application.Trim(x)
    x = VBA.Split(x, " ")(0)
    xm = x
End Function


'获取GWg
Function GWg(x) As Integer
    x = Application.Trim(x)
    x = VBA.Split(x, " ")(1)
    x = VBA.Replace(x, "*", "")
    GWg = x
End Function


1.rar (21.9 KB, 下载次数: 39)

评分

参与人数 1学分 +2 收起 理由
mytto88 + 2 神马都是浮云

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-9-16 12:29 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2019-10-24 11:53 | 显示全部楼层

TXT批量转化为电子表格

请问TXT批量转化为电子表格,出现问题如何处理,主要是日期

测试.zip

30.32 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2019-10-24 11:57 | 显示全部楼层
测试.zip (31.22 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2019-10-24 11:57 | 显示全部楼层
应是这个哈
回复

使用道具 举报

 楼主| 发表于 2019-10-24 15:18 | 显示全部楼层
爱疯 发表于 2019-9-12 17:53
Option Explicit

Dim A(1 To 10 ^ 4, 1 To 32)  '32 = 日期占1列 + 项目占1列 + GWg占30列

请问老师,依据你的答案,目前出现问题就是日期转化上假设本来是2019年10月8日,但是点刷新后转化到电子表格就成了2019年8月10日,月份与日期不对,若是10日后的日期转化后是正确的,不知是啥原因,请老师赐教,谢谢了。
回复

使用道具 举报

发表于 2019-10-24 15:34 | 显示全部楼层
红棉红 发表于 2019-10-24 15:18
请问老师,依据你的答案,目前出现问题就是日期转化上假设本来是2019年10月8日,但是点刷新后转化到电子 ...

不大理解你说的情况,能上传下有错误的那个excel文档吗?
回复

使用道具 举报

发表于 2019-10-24 16:31 | 显示全部楼层
你可以手动打开某个txt文件,里面的日期原本就是这样子的,并不是因为执行代码后而改变的。如果一定要改成1楼效果,就加一句,该句作用是让A列将日期:年还是年,日作为月,月作为日


    Rows("3:65536") = ""
    Range("a:a").NumberFormat = "e/d/m"
    [a3].Resize(s, UBound(A, 2)) = A



测试2.rar (30.35 KB, 下载次数: 115)
回复

使用道具 举报

 楼主| 发表于 2019-10-24 17:04 | 显示全部楼层
爱疯 发表于 2019-10-24 16:31
你可以手动打开某个txt文件,里面的日期原本就是这样子的,并不是因为执行代码后而改变的。如果一定要改成1 ...

太感谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 22:13 , Processed in 0.409149 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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