0
我已經開發出了下面的代碼打開了大量的文本文件(同一文件夾內),並從每個文件的所有內容複製到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默認」)。在這個例子中的行數是5(如在「CELL_DATA」開始的行中所指出的,但是這個數字可以從文件到文件改變)。
總之,我正在查看我的代碼,只將最後一批數字複製到出類拔萃的,而不是一切,但我在就如何解決這個虧損
任何幫助或建議將不勝感激
子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
非常感謝您爲此代碼!非常感激。它與我的文本文件完全不同。此代碼似乎無法在我的文本文件中找到換行符,而是將文本視爲一個連續的行。在我最初的代碼中,你會看到我必須將分隔符(Sep)定義爲'vbLf',我可以使用它來在文本文件中顯示換行符。有沒有一種簡單的方法將這個代碼納入代碼? – Jon
我不明白你爲什麼需要找到換行符。我運行了你的代碼,它和我的代碼一樣:將每行都作爲一個單獨的文本處理,並將整行放在一個單元格中。 @Jon –
嗨拉斐爾,問題在於,對於我的文本文件,它無法找到每行文本文件的結尾,而是將整個文件視爲一條很長的一行。我不知道爲什麼會發生這種情況,我猜測它是某種編碼unix行尾的字符,或者是我的文本文件中沒有代碼的東西。下面的鏈接談論這個問題。 https://www.mrexcel.com/forum/excel-questions/787225-vba-reading-text-file-parsing-line-breaks-carriage-returns.html – Jon