从txt文件读取数据并将其存储在excel文件中时发生macros问题

我需要逐个读取多个txt文件,并从中读取数据并将其存储在Excel表格中。 从第一个txt文件中获取最后一个值的问题,以及当我的macros正在读取第二个文件的时候,它会关注第一个txt文件的内容,并截断第二个文件中的内容。 请问您可以提供意见

看待

'Sub copy_data()

Dim myFile As String,text As String,textline As String,posvalueFieldTagName As Integer,posnextFieldTagName As Integer,fieldTagValue As String

Dim dataFile,nextFieldTagName,startFieldTagName As String Dim y As Workbook

Dim z,i,j,lenTagValue,sample1,sample2 As Integer Dim FilePath,FileOnly,PathOnly As String

Dim cIn,cOut,cIO,a,b,c,d,rCount As Integer

Dim dataFileIn,dataFileOut,fieldVal As String

设置y = ThisWorkbook

For i = 1 To y.Sheets.Count 'Either we can put all names in an array , here we are printing all the names in Sheet 2 y.Sheets("sheetName").Range("A" & i) = y.Sheets(i).Name Next i 

y.Save

对于z = 1到y.Sheets(“sheetName”)。UsedRange.Rows.Count – 1

  cIn = 0 cOut = 0 cIO = 0 dataFile = y.Worksheets("sheetName").Cells(1, z).Value dataFileIn = dataFile & "I" dataFileOut = dataFile & "O" rCount = y.Sheets(dataFile).UsedRange.Rows.Count For a = 2 To rCount fieldVal = y.Worksheets(dataFile).Cells(a, 1).Value fieldVal = Trim(fieldVal) If fieldVal = dataFile & "I" Then cIn = cIn + 1 End If If fieldVal = dataFile & "O" Then cOut = cOut + 1 End If If fieldVal = dataFile Then cIO = cIO + 1 End If Next a fieldVal = Trim(y.Worksheets(dataFile).Cells(z + 1, 1).Value) If fieldVal = dataFile Then FilePath = ThisWorkbook.FullName FileOnly = ThisWorkbook.Name PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly)) myFile = PathOnly & dataFile & ".txt" Open myFile For Input As #1 Do Until EOF(1) Line Input #1, textline text = text & textline Loop MsgBox (text) Close #1 For b = 2 To cIO - 1 startFieldTagName = y.Worksheets(dataFile).Range("F" & b).Value If InStr(text, startFieldTagName) = 0 Then Exit For Else nextFieldTagName = y.Worksheets(dataFile).Range("F" & b + 1).Value posvalueFieldTagName = InStr(text, startFieldTagName) + 1 + Len(startFieldTagName) posnextFieldTagName = InStr(text, nextFieldTagName) If posnextFieldTagName = 0 Then posnextFieldTagName = Len(text) Else posnextFieldTagName = InStr(text, nextFieldTagName) End If lenTagValue = posnextFieldTagName - posvalueFieldTagName fieldTagValue = Mid(text, posvalueFieldTagName, lenTagValue) y.Worksheets(dataFile).Range("I" & b).Value = CStr(fieldTagValue) End If Next b y.Save Else FilePath = ThisWorkbook.FullName FileOnly = ThisWorkbook.Name PathOnly = Left(FilePath, Len(FilePath) - Len(FileOnly)) myFile = PathOnly & dataFile & "I" & ".txt" Open myFile For Input As #1 Do Until EOF(1) Line Input #1, textline text = text & textline Loop MsgBox (text) Close #1 For c = 2 To cIn - 1 startFieldTagName = y.Worksheets(dataFile).Range("F" & c).Value If InStr(text, startFieldTagName) = 0 Then Exit For Else nextFieldTagName = y.Worksheets(dataFile).Range("F" & c + 1).Value posvalueFieldTagName = InStr(text, startFieldTagName) + 1 + Len(startFieldTagName) posnextFieldTagName = InStr(text, nextFieldTagName) If posnextFieldTagName = 0 Then posnextFieldTagName = Len(text) Else posnextFieldTagName = InStr(text, nextFieldTagName) End If lenTagValue = posnextFieldTagName - posvalueFieldTagName fieldTagValue = Mid(text, posvalueFieldTagName, lenTagValue) y.Worksheets(dataFile).Range("I" & c).Value = CStr(fieldTagValue) fieldTagValue = y.Worksheets(dataFile).Range("I" & c).Value If fieldTagValue <> "" Then y.Worksheets(dataFile).Range("J" & c).Value = "Y" Else y.Worksheets(dataFile).Range("J" & c).Value = "N" y.Worksheets(dataFile).Range("G" & c).Value = "Blank Space" y.Worksheets(dataFile).Range("I" & c).Value = "Blank Space" End If End If Next c ' MsgBox (y.Worksheets(dataFile).Cells(8, i).Value) y.Save myFile = PathOnly & dataFile & "O" & ".txt" Open myFile For Input As #2 Do Until EOF(2) Line Input #2, textline text = text & textline Loop MsgBox (text) Close #2 For d = cIn + 2 To cOut - 1 startFieldTagName = y.Worksheets(dataFile).Range("F" & d).Value If InStr(text, startFieldTagName) = 0 Then Exit For Else nextFieldTagName = y.Worksheets(dataFile).Range("F" & d + 1).Value posvalueFieldTagName = InStr(text, startFieldTagName) + 1 + Len(startFieldTagName) posnextFieldTagName = InStr(text, nextFieldTagName) If posnextFieldTagName = 0 Then posnextFieldTagName = Len(text) Else posnextFieldTagName = InStr(text, nextFieldTagName) End If lenTagValue = posnextFieldTagName - posvalueFieldTagName fieldTagValue = Mid(text, posvalueFieldTagName, lenTagValue) MsgBox (fieldTagValue) y.Worksheets(dataFile).Range("I" & d).Value = CStr(fieldTagValue) End If Next d y.Save 

万一

下一个z

y.Save

y.Close

End Sub'