我有大約5000個.csv文件,我想在每個文件中搜索一行並將其解壓縮。我粘貼了下面的代碼的關鍵部分,這是可行的,但由於我必須打開和關閉每個.csv文件,所以對於5000個文件來說,這個過程很慢。有沒有辦法讀取一個CSV文件,而無需打開它?我曾考慮編寫一個小腳本來將每個csv文件轉換爲Excel?謝謝。在Excel中快速從CSV文件中提取行VBA
SP_File_Name = Dir(DN_Path & "*.*")
Count = 1
Set START_CELL_RANGE = TARGET_SP_SHEET.Range("B3")
Set TICKER_CODE_RANGE = TARGET_SP_SHEET.Range("B1")
While (SP_File_Name <> "")
SP_Full_Path = DN_Path & SP_File_Name
Workbooks.OpenText Filename:=SP_Full_Path, DataType:=xlDelimited, comma:=True, Local:=True
Set INPUT_WORKBOOK = ActiveWorkbook
Set INPUT_SHEET = INPUT_WORKBOOK.Worksheets(1)
INPUT_SHEET.Range("$A$1").Select
Set INPUT_RANGE = ActiveCell.CurrentRegion
Set INPUT_FIRST_MATCH_RANGE = INPUT_RANGE.Find(TICKER_CODE_RANGE)
If INPUT_FIRST_MATCH_RANGE Is Nothing Then
GoTo NOT_FOUND
End If
START_CELL = START_CELL_RANGE.Address
TARGET_SP_SHEET.Range(START_CELL_RANGE.Address, START_CELL_RANGE.Offset(0, 6).Address).Value = INPUT_SHEET.Range(INPUT_FIRST_MATCH_RANGE.Address, INPUT_FIRST_MATCH_RANGE.Offset(0, 7).Address).Value
' write diagnostics
Sheet5.Range("K" & Count + 4).Value = START_CELL
Sheet5.Range("L" & Count + 4).Value = "$A$1"
Sheet5.Range("M" & Count + 4).Value = INPUT_FIRST_MATCH_RANGE.Address
Sheet5.Range("N" & Count + 4).Value = INPUT_FIRST_MATCH_RANGE.Offset(0, 7).Address
NOT_FOUND:
Set START_CELL_RANGE = START_CELL_RANGE.Offset(1, 0)
Workbooks(SP_File_Name).Close SaveChanges:=False
SP_File_Name = Dir
Count = Count + 1
Wend
這可能有所幫助。看起來像一個類似的問題。 http://stackoverflow.com/questions/14907952/load-contents-of-csv-file-to-array-without-opening-file –
您如何在不打開文件的情況下閱讀文件內容?你覺得VBA有心理能力嗎?你可以在不打開封面的情況下閱讀書中的文字嗎?趕快 - 給我第100頁「我,機器人」上的第20個單詞。首先將CSV文件轉換爲Excel格式將無濟於事;你*仍然*必須打開每個文件來閱讀內容。 –
我可能會使用Windows Cmd Shell命令'findstr'。您可以將所有行輸出到文件中,然後將該文件讀入Excel中,或者在涉及更多編程時直接輸出到Excel中。你可以從VBA運行腳本。你可能也可以使用PowerShell,但我並不熟悉這一點。 –