Excel精英培训网

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

[已解决]提取TXT指定内容到表格

[复制链接]
发表于 2017-7-3 20:19 | 显示全部楼层 |阅读模式
求:提取文本中指定内容到B列,A列提取对应的文本编号。

最佳答案
2017-7-4 10:54
Sub test()
    Dim p, f
    Rows("2:65536") = ""
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.txt")
    Do While f <> ""
        Call ReadText(p, f)
        f = Dir
    Loop
End Sub

Sub ReadText(p, f)
    Dim str$, i, A()
    Open p & f For Input As #1
    f = Split(f, ".")(0)
    Do While Not EOF(1)
        '读入一行数据并将其赋予变量str
        Line Input #1, str
        i = i + 1
        ReDim Preserve A(1 To 2, 1 To i)
        A(1, i) = CInt(f)
        A(2, i) = Left(str, 29)
    Loop
    Close #1
    A = Application.Transpose(A)
    [A65536].End(xlUp).Offset(1, 0).Resize(UBound(A), UBound(A, 2)) = A
End Sub



aa.rar (11.75 KB, 下载次数: 12)
03201434.jpg

新建文件夹.rar

9.84 KB, 下载次数: 21

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-7-4 09:31 | 显示全部楼层
Sub test()
    Dim p, f, n
    Rows("2:65536") = ""
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.txt")
    Do While f <> ""
        n = n + 1
        Call ReadText(p, f, n)
        f = Dir
    Loop
End Sub

Sub ReadText(p, f, n)
    Dim str$, i, A()
    Open p & f For Input As #1
    Do While Not EOF(1)
        '读入一行数据并将其赋予变量str
        Line Input #1, str
        i = i + 1
        ReDim Preserve A(1 To 2, 1 To i)
        A(1, i) = n
        A(2, i) = Left(str, 29)
    Loop
    Close #1
    A = Application.Transpose(A)
    [A65536].End(xlUp).Offset(1, 0).Resize(UBound(A), UBound(A, 2)) = A
End Sub
A.rar (13.94 KB, 下载次数: 5)
回复

使用道具 举报

发表于 2017-7-4 10:54 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim p, f
    Rows("2:65536") = ""
    p = ThisWorkbook.Path & "\"
    f = Dir(p & "*.txt")
    Do While f <> ""
        Call ReadText(p, f)
        f = Dir
    Loop
End Sub

Sub ReadText(p, f)
    Dim str$, i, A()
    Open p & f For Input As #1
    f = Split(f, ".")(0)
    Do While Not EOF(1)
        '读入一行数据并将其赋予变量str
        Line Input #1, str
        i = i + 1
        ReDim Preserve A(1 To 2, 1 To i)
        A(1, i) = CInt(f)
        A(2, i) = Left(str, 29)
    Loop
    Close #1
    A = Application.Transpose(A)
    [A65536].End(xlUp).Offset(1, 0).Resize(UBound(A), UBound(A, 2)) = A
End Sub



aa.rar (11.75 KB, 下载次数: 12)

评分

参与人数 1 +1 收起 理由
skiss10086 + 1 很给力

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-7-4 12:34 | 显示全部楼层
爱疯 发表于 2017-7-4 10:54
Sub test()
    Dim p, f
    Rows("2:65536") = ""

谢谢,“爱疯”老师。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 22:12 , Processed in 0.287197 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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