我有一个txt文件,其中包含以下数据示例
赫兹,TEST1,TEST2,TEST3,TEST4,TEST5,
1,#,#,#,#,#,
2,#,#,#,#,#,
3,#,#,#,#,#,
4,#,#,#,#,#,
5,#,#,#,#,#,
6,#,#,#,#,#,
7,#,#,#,#,#,
。 。 等
所以每次测试都是1,2,3,4,5频率的读数
但是当我使用我的代码时,它会将所有文本读入第一列,而不是每个都在单独的列中。我认为“,”应该把它分开,所以逗号之间的每个部分都在一个单独的列和行中?
代码:
Dim DataFileName As String
Dim DFNamePath As String
Dim Handle As String
Dim i As Integer
i = 2
DataFileName = Cells(1, 2).Value
DFNamePath = "C:\Users\aholiday\Desktop\Data Dump\" & DataFileName & ".txt"
If MsgBox("Import RF Data?", vbYesNo) = vbYes Then
Open DFNamePath For Input As #1
Do Until EOF(1)
Input #1, Handle
Cells(i, 1) = Handle
i = i + 1
Loop
Close #1
Else
Exit Sub
End If
我在循环过程中也会在文件结尾处输入运行时错误62,我想在循环最后一遍
答案 0 :(得分:2)
一旦使用Range.TextToColumns method到达工作表,您就可以轻松拆分导入的TXT。
Sub split_Import()
Application.DisplayAlerts = False '<~~ take the traing wheels off
With Worksheets("Sheet4")
With .Columns(1)
.TextToColumns Destination:=.Cells(1), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Comma:=True, Tab:=False, Semicolon:=False, _
Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), _
Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1))
End With
End With
Application.DisplayAlerts = True
End Sub
您的数据非常简单,因此无需在 General 输出之外设置任何xlColumnDataType FieldInfo值。
如果列数未知,则Workbooks.OpenText method可能是更好的选择。请注意它与Range.TextToColumns method非常相似。 FieldInfo xlColumnDataType数组是可选的。
Sub split_Import()
Dim fn As String, fp As String, ws As Worksheet
fp = Environ("TMP") & Chr(92) '<~~ set the TXT source folder
Set ws = Worksheets("Sheet3") '<~~ set destination worksheet
With ws
fn = .Cells(1, 1).Value2 & ".txt"
Workbooks.OpenText Filename:=fp & fn, startrow:=2, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
Comma:=True, Tab:=False, Semicolon:=False, _
Space:=False, Other:=False, local:=False
With ActiveWorkbook
With .Worksheets(1).Cells(1, 1).CurrentRegion
ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(.Rows.Count, .Columns.Count) = .Value
End With
.Close False
End With
End With
End Sub
请注意,我已丢弃标题(例如 startrow:= 2 )以匹配您的第一个数据图片。如果要保留标题,请设置为startrow:=1
。
请注意,我在合并的单元格中干扰查找A列中的第一个空行时遇到了一些问题。如果您打算保留它们,则可能需要进行调整。