用逗号将TXT读入单个单元格

时间:2016-01-12 16:14:37

标签: excel vba excel-vba

我有一个txt文件,其中包含以下数据示例

赫兹,TEST1,TEST2,TEST3,TEST4,TEST5,

1,#,#,#,#,#,
2,#,#,#,#,#,
3,#,#,#,#,#,
4,#,#,#,#,#,
5,#,#,#,#,#,
6,#,#,#,#,#,
7,#,#,#,#,#,

。 。 等

所以每次测试都是1,2,3,4,5频率的读数

但是当我使用我的代码时,它会将所有文本读入第一列,而不是每个都在单独的列中。我认为“,”应该把它分开,所以逗号之间的每个部分都在一个单独的列和行中?

现在看起来像这样 enter image description here

我觉得它看起来像 enter image description here

代码:

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,我想在循环最后一遍

1 个答案:

答案 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

如果列数未知,则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列中的第一个空行时遇到了一些问题。如果您打算保留它们,则可能需要进行调整。