将特定行从文本文件复制到excel

时间:2017-07-26 09:59:00

标签: excel vba excel-vba text-files

我开发了以下代码来打开大量文本文件(在同一文件夹中)并将每个文件中的所有内容复制到excel中(每行文本文件一个单元格,每个文本文件一行)。

但是,我不需要文本文件中的所有数据,这会减慢进程。文本文件采用以下格式:

DATASET UNSTRUCTURED_GRID
POINTS 5 float
0.096853 0.000000 0.111997
0.096853 -0.003500 0.111997
0.096890 0.000000 0.084015
0.096853 -0.003500 0.111997
0.096890 -0.003500 0.084015
CELL_DATA 5
SCALARS pressure float 1
LOOKUP_TABLE default
-0.000000
-0.000000
-3.000000
-2.000000
-6.000000

我需要从此文件复制的数据是第二批数字(在“LOOKUP_TABLE默认值”下面)。此示例中的行数为5(如“CELL_DATA”行开头所述,但此数字可以在不同文件之间更改。

总而言之,我正在寻找我的代码,只将最后一批数字复制到excel而不是一切,但我对如何解决这个问题感到茫然。

非常感谢任何帮助或建议。

Sub ImportTextFile()

Dim RowNdx As Integer
Dim ColNdx As Integer
Dim TempVal As String
Dim WholeLine As String
Dim Pos As Integer
Dim NextPos As Long
Dim SaveColNdx As Integer

FName = "E:\zdump\"
MyFile = Dir(FName & "*.txt")
Sep = vbLf

SaveColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row

Do While MyFile <> ""
    Open (FName & MyFile) For Input As #1

    While Not EOF(1)
        Line Input #1, WholeLine
        If Right(WholeLine, 1) <> Sep Then
            WholeLine = WholeLine & Sep
        End If
        ColNdx = SaveColNdx
        Pos = 1
        NextPos = InStr(Pos, WholeLine, Sep)
        While NextPos >= 1
            TempVal = Mid(WholeLine, Pos, NextPos - Pos)
            Cells(RowNdx, ColNdx).Value = TempVal
            Pos = NextPos + 1
            ColNdx = ColNdx + 1
            NextPos = InStr(Pos, WholeLine, Sep)
        Wend
        RowNdx = RowNdx + 1
    Wend
    Close #1
    MyFile = Dir()
    Debug.Print text
Loop End Sub

1 个答案:

答案 0 :(得分:0)

尝试一下:

399360