主题:[讨论]如何提取提取特定字符
ss1268
[专家分:0] 发布于 2009-06-13 21:36:00
如何将附件里面的4个文件中的特定字段如: “N101 T1 M6 ( 3" FACEMILL - 45 DEG - SHEAR INSERTS ),N102 T2 M6 ( 2.0 SANDVIK STACKMILL X 11 MM INSERTS )”全部提出来,按文件里面的顺序排列保存到excel里面,
附件里的4个文件是text格式
请大侠帮忙。本人万分感谢
回复列表 (共6个回复)
沙发
一江秋水 [专家分:9680] 发布于 2009-06-14 19:27:00
1.打开一个 txt 文件,并读入一个字符串变量
2.把你所说的特定字作为关键字,使用 instr 函数查找,取得特定字的起始位置
3.使用 Mid 函数获取这个特定字符串,排列保存到excel里面
4.重复第2第3步,把文件中的所有特定字提取出来
5.关闭这个 txt 文件
6.重复第1-第5步,把4个 txt 文件中的特定字全部提取出来
板凳
ss1268 [专家分:0] 发布于 2009-06-15 07:40:00
能否给出代码,谢谢,
本人是个菜鸟,有些函数不会,谢谢
3 楼
一江秋水 [专家分:9680] 发布于 2009-06-15 15:33:00
Option Explicit
Dim FindSt As String '欲提取的字符串
Private Sub Form_Load()
FindSt = "N101 T1 M6"
End Sub
Private Sub Command1_Click()
On Error GoTo inerr
Dim PName() As String, Ppath As String, z As String, st As String
Dim FindPos As Long, k As Long, i As Integer
With CommonDialog1
.DialogTitle = "批量打开文件"
.MaxFileSize = 32700 '加大文件名缓冲区
.Flags = &H1204
.Filter = "*.txt|*.txt"
.ShowOpen '可使用Shift或Ctrl键多选
st = .FileName
End With
Ppath = CurDir & "\" '获取路径
st = Right$(st, Len(st) - Len(Ppath) - 1) & Chr(32) '获取去除路径后的所有文件名
st = Replace(st, " ", "`")
PName = Split(st, "`", -1) '获取文件名
For i = 0 To UBound(PName)
st = ""
Open Ppath & PName(i) For Input As #1 '读文件
Do Until EOF(1)
Line Input #1, z
st = st & z & vbCrLf
Loop
Close #1
FindPos = InStr(1, st, FindSt) '获取欲提取字符串的位置
Do While FindPos
z = Mid$(st, FindPos, Len(FindSt)) '提取字符串
Debug.Print z '在这里处理提取的字符串,顺序排列保存到excel里面,你自己写一下代码
FindPos = FindPos + 1
FindPos = InStr(FindPos, st, FindSt)
Loop
Next
Exit Sub
inerr:
Close
End Sub
4 楼
ss1268 [专家分:0] 发布于 2009-06-16 13:42:00
老师,在下是个菜鸟,中间那段代码我还是部会写,老师可否完成中间的过程,谢谢,
在下正在学习编程,钢起步,就希望有些完整的代码实例,学习和参考,希望老师们能够多多包涵,让你们费心了,花时间了,
在下非常感谢老师们的帮助
5 楼
ss1268 [专家分:0] 发布于 2009-06-17 16:52:00
老师,在下是个菜鸟,中间那段代码我还是部会写,老师可否完成中间的过程,谢谢,
在下正在学习编程,钢起步,就希望有些完整的代码实例,学习和参考,希望老师们能够多多包涵,让你们费心了,花时间了,
在下非常感谢老师们的帮助
6 楼
gfan [专家分:60] 发布于 2009-06-20 08:34:00
[[[[[[[[[[[[*****[b][color=FF0000][size=2]代做毕业设计[/size][/color][/b]*****]]]]]]]]]]]]
主营:
[color=FF0000][size=1]VB Delphi VC Access SqlServer[/size][/color]等
QQ: [size=1]383147818[/size]
我来回复