Excel精英培训网

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

[已解决]写VBA代码实现提取文本文档的内容

[复制链接]
发表于 2014-6-5 21:22 | 显示全部楼层 |阅读模式
本帖最后由 oubaiyas122 于 2014-6-5 21:23 编辑

论坛老师:
              您们好!
              后学需要将在附件中的文本文档提取相应的内容到EXCEL里,效果同附件中EXCEL的形式。请各位看看怎么写代码为好,谢谢!
最佳答案
2014-6-5 22:27
  1. Sub Macro1()
  2. On Error Resume Next
  3. Dim arr(), i&, zf$
  4. Open ThisWorkbook.Path & "\附件.txt" For Input As #1
  5.     w = Split(StrConv(InputB(LOF(1), #1), vbUnicode), "---    END")
  6. Close #1
  7. ReDim arr(1 To UBound(w), 1 To 2)
  8. For i = 0 To UBound(w) - 1
  9.     zf = Split(Split(w(i), "IY=")(1), ",")(0)
  10.     arr(i + 1, 1) = Mid(zf, 2, Len(zf) - 2)
  11.     arr(i + 1, 2) = Split(Split(w(i), " 产品类型  = ")(1), vbCrLf)(0)
  12. Next
  13. Range("a2").Resize(UBound(arr), 2) = arr
  14. End Sub
复制代码

附件.rar

6.92 KB, 下载次数: 34

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-6-5 22:27 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. On Error Resume Next
  3. Dim arr(), i&, zf$
  4. Open ThisWorkbook.Path & "\附件.txt" For Input As #1
  5.     w = Split(StrConv(InputB(LOF(1), #1), vbUnicode), "---    END")
  6. Close #1
  7. ReDim arr(1 To UBound(w), 1 To 2)
  8. For i = 0 To UBound(w) - 1
  9.     zf = Split(Split(w(i), "IY=")(1), ",")(0)
  10.     arr(i + 1, 1) = Mid(zf, 2, Len(zf) - 2)
  11.     arr(i + 1, 2) = Split(Split(w(i), " 产品类型  = ")(1), vbCrLf)(0)
  12. Next
  13. Range("a2").Resize(UBound(arr), 2) = arr
  14. End Sub
复制代码
回复

使用道具 举报

发表于 2014-6-5 22:28 | 显示全部楼层
………………

新建文件夹.zip

10.72 KB, 下载次数: 16

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-6-6 09:48 | 显示全部楼层
dsmch老师的代码非常完美,非常感谢!之前用select case语句来执行,总是不能同时取到A列和与之对应的B列。
引号里面的东西一直不知道怎么取,用mid函数也不能取得很合适。
dsmch老师,能否把每句代码解释下?还有整个代码思路是怎样的,没太懂。
谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 13:25 , Processed in 0.272072 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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