Excel精英培训网

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

[已解决]请教如何从TXT文件中获取指定数据的方法?

[复制链接]
发表于 2021-6-2 13:05 | 显示全部楼层 |阅读模式
请教如何从TXT文件中获取指定数据的方法?
最佳答案
2021-6-2 13:46
在注意一下紅色部份,做適當的修改!

Sub demo()
   Set d = CreateObject("Scripting.Dictionary")
   Set f = CreateObject("ADODB.Stream")
   a = Sheet1.UsedRange
   For i = 2 To UBound(a)
      d(a(i, 9) & ".txt") = i
   Next
   Path = ThisWorkbook.Path & "\有效期\"
   file = Dir(Path & "*.txt")
   Do Until file = ""
      Key = Right(file, 15)
      If d(Key) = 0 Then GoTo 1
      f.Charset = "utf-8": f.Open
      f.LoadFromFile Path & "\" & file
      v1 = Split(f.ReadText(-2), ":")
      v2 = Split(f.ReadText(-2), ":")
      v3 = Split(f.ReadText(-2), ":")
      If UBound(v1) = 1 Then a(d(Key), 8) = v1(1) & "-" & v3(1)
      f.Close
1:
      file = Dir()
   Loop
   [a1].Resize(UBound(a), UBound(a, 2)) = a
End Sub

祝順心,南無阿彌陀佛!


微信图片_20210602125913.png

调试.zip

367.48 KB, 下载次数: 8

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2021-6-2 13:46 | 显示全部楼层    本楼为最佳答案   
在注意一下紅色部份,做適當的修改!

Sub demo()
   Set d = CreateObject("Scripting.Dictionary")
   Set f = CreateObject("ADODB.Stream")
   a = Sheet1.UsedRange
   For i = 2 To UBound(a)
      d(a(i, 9) & ".txt") = i
   Next
   Path = ThisWorkbook.Path & "\有效期\"
   file = Dir(Path & "*.txt")
   Do Until file = ""
      Key = Right(file, 15)
      If d(Key) = 0 Then GoTo 1
      f.Charset = "utf-8": f.Open
      f.LoadFromFile Path & "\" & file
      v1 = Split(f.ReadText(-2), ":")
      v2 = Split(f.ReadText(-2), ":")
      v3 = Split(f.ReadText(-2), ":")
      If UBound(v1) = 1 Then a(d(Key), 8) = v1(1) & "-" & v3(1)
      f.Close
1:
      file = Dir()
   Loop
   [a1].Resize(UBound(a), UBound(a, 2)) = a
End Sub

祝順心,南無阿彌陀佛!


demo.rar

357.43 KB, 下载次数: 6

评分

参与人数 2学分 +4 收起 理由
beachum + 2 我和小伙伴都惊呆了
qiaodong64 + 2 学习了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-6-2 13:51 | 显示全部楼层
cutecpu 发表于 2021-6-2 13:46
在注意一下紅色部份,做適當的修改!

Sub demo()

你好,这个20070528-20270528日期间 能否加上小数点呢,类似2007.05.28-2027.05.28
回复

使用道具 举报

发表于 2021-6-2 14:01 | 显示全部楼层
qiaodong64 发表于 2021-6-2 13:51
你好,这个20070528-20270528日期间 能否加上小数点呢,类似2007.05.28-2027.05.28

藍色部份就好

Sub demo()
   Set d = CreateObject("Scripting.Dictionary")
   Set f = CreateObject("ADODB.Stream")
   a = Sheet1.UsedRange
   For i = 2 To UBound(a)
      d(a(i, 9) & ".txt") = i
   Next
   Path = ThisWorkbook.Path & "\有效期\"
   file = Dir(Path & "*.txt")
   Do Until file = ""
      Key = Right(file, 15)
      If d(Key) = 0 Then GoTo 1
      f.Charset = "utf-8": f.Open
      f.LoadFromFile Path & "\" & file
      v1 = Split(f.ReadText(-2), ":")
      v2 = Split(f.ReadText(-2), ":")
      v3 = Split(f.ReadText(-2), ":")
      If UBound(v1) = 1 Then a(d(Key), 8) = Format(v1(1), "0\.00\.00;;;@") & "-" & Format(v3(1), "0\.00\.00;;;@")
      f.Close
1:
      file = Dir()
   Loop
   [a1].Resize(UBound(a), UBound(a, 2)) = a
End Sub

祝順心,南無阿彌陀佛!


评分

参与人数 1学分 +2 收起 理由
qiaodong64 + 2

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-6-2 14:04 | 显示全部楼层
cutecpu 发表于 2021-6-2 14:01
改藍色部份就好

Sub demo()

非常感谢你的帮助,谢谢!!!

评分

参与人数 1学分 +2 收起 理由
cutecpu + 2 不客氣。祝順心,南無阿彌陀佛!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-6-2 15:01 | 显示全部楼层
cutecpu 发表于 2021-6-2 14:01
改藍色部份就好

Sub demo()

放到“身份证国徽页面资料”中执行程序没有反应,是不是我哪个地方弄错了呢?

2.身份证-国徽页数据提取.zip

42.81 KB, 下载次数: 0

回复

使用道具 举报

发表于 2021-6-2 15:08 | 显示全部楼层
qiaodong64 发表于 2021-6-2 15:01
放到“身份证国徽页面资料”中执行程序没有反应,是不是我哪个地方弄错了呢?

如果是放在資料夾裡面執行的話,把下面這句改一下(藍變紅):  
Path = ThisWorkbook.Path & "\有效期\"
Path = ThisWorkbook.Path & "\"

祝順心,南無阿彌陀佛!
回复

使用道具 举报

 楼主| 发表于 2021-6-2 15:23 | 显示全部楼层
cutecpu 发表于 2021-6-2 15:08
如果是放在資料夾裡面執行的話,把下面這句改一下(藍變紅):  
Path = ThisWorkbook.Path & "\有效期\"
...

另外年月日之间  用“点号”隔开的话,这句 If UBound(v1) = 1 Then a(d(Key), 8) = Format(v1(1), "0\.00\.00;;;@") & "-" & Format(v3(1), "0\.00\.00;;;@") 如何修改呢
回复

使用道具 举报

发表于 2021-6-2 15:25 | 显示全部楼层
qiaodong64 发表于 2021-6-2 15:23
另外年月日之间  用“点号”隔开的话,这句 If UBound(v1) = 1 Then a(d(Key), 8) = Format(v1(1), "0\. ...

您好,這句已經是用 . 號隔開了喔 → 例: 2021.06.02- 2021.06.03

评分

参与人数 1学分 +2 收起 理由
qiaodong64 + 2

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2021-6-2 15:29 | 显示全部楼层
cutecpu 发表于 2021-6-2 15:25
您好,這句已經是用 . 號隔開了喔 → 例: 2021.06.02- 2021.06.03

是我弄错了,非常感谢你!!!

评分

参与人数 1学分 +2 收起 理由
cutecpu + 2 不客氣。祝順心,南無阿彌陀佛!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 10:13 , Processed in 0.191144 second(s), 17 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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