簡體   English   中英

將特定行從文本文件復制到Excel

[英]Copy specific lines from text files into excel

我開發了以下代碼來打開大量文本文件(在同一文件夾中),並將每個文件中的所有內容復制到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默認值”下方)。 在此示例中,行數為五(如在“ CELL_DATA”開頭的行中所述,但是此數目可以在文件之間更改。

總而言之,我正在尋找只將最后一批數字而不是所有內容復制到excel中的代碼,但是我對如何解決這個問題感到困惑。

任何幫助或建議,將不勝感激。

子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

試試看:

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
Dim SaveRowNdx As Long
Dim FoundData As Boolean
Dim NumberOfData As Long

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

ColNdx = ActiveCell.Column
RowNdx = ActiveCell.Row
SaveRowNdx = RowNdx

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
        Pos = 1
        NextPos = InStr(Pos, WholeLine, Sep)
        While NextPos >= 1
            TempVal = Mid(WholeLine, Pos, NextPos - Pos)

            If FoundData = False Then
                If InStr(TempVal, "CELL_DATA") Then
                    NumberOfData = Val(Right(TempVal, Len(TempVal) - Len(Left(TempVal, Len("CELL_DATA") + 1))))
                End If

                If InStr(TempVal, "LOOKUP_TABLE default") <> 0 Then
                    FoundData = True
                End If

                Pos = NextPos + 1
                NextPos = InStr(Pos, WholeLine, Sep)
            Else
                If NumberOfData <> 0 Then
                    Cells(RowNdx, ColNdx).Value = TempVal
                    Pos = NextPos + 1
                    RowNdx = RowNdx + 1
                    NextPos = InStr(Pos, WholeLine, Sep)
                    NumberOfData = NumberOfData - 1
                End If
            End If
        Wend

    Wend
    Close #1
    FoundData = False
    ColNdx = ColNdx + 1
    Cells(SaveRowNdx, ColNdx).Activate
    RowNdx = SaveRowNdx
    MyFile = Dir()
    'Debug.Print Text
Loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM