我有一個包含多個文本文件的文件夾,我每天都會添加一個文本文件。所有文本文件格式都相同,並以管道分隔。我可以將多個文本文件導入到一個Excel表單中嗎?
是否有可能爲excel創建代碼,該代碼將自動將多個文本文件中的數據導入到一個工作表中?
我發現了一些代碼可以導入文件夾中的所有文本文件,但只有我將它全部更改爲逗號分隔第一個。另外,如果我將文件添加到文件夾中,我無法更新它。
任何幫助將不勝感激!
我有一個包含多個文本文件的文件夾,我每天都會添加一個文本文件。所有文本文件格式都相同,並以管道分隔。我可以將多個文本文件導入到一個Excel表單中嗎?
是否有可能爲excel創建代碼,該代碼將自動將多個文本文件中的數據導入到一個工作表中?
我發現了一些代碼可以導入文件夾中的所有文本文件,但只有我將它全部更改爲逗號分隔第一個。另外,如果我將文件添加到文件夾中,我無法更新它。
任何幫助將不勝感激!
聽起來好像運行腳本來循環目錄中的所有文件,創建一個由所有文件的內容組成的新文件作爲新行,並將其另存爲csv。是這樣的:
import os
basedir='c://your_root_dir'
dest_csv="<path to wherever you want to save final csv>.csv"
dest_list=[]
for root, subs, files in os.walk(basedir):
for f in files:
thisfile=open(basedir+f)
contents=thisfile.readlines()
dest_list.append(contents)
#all that would create a list containing the contents of all the files in the directory
#now we'll write it as a csv
f_csv=open(dest_csv,'w')
for i in range(len(dest_list)):
f_csv.write(dest_list[i])
f_csv.close()
你可以保存腳本之類的地方,每天運行它,然後在Excel中打開CSV產生。這假設你想從每個文件中獲取特定目錄中的數據,並且你需要的所有文件都在一個目錄中。
您可以使用Schema.ini(http://msdn.microsoft.com/en-us/library/ms709353(VS.85).aspx),Jet驅動程序和Union查詢,祝你好運。
處理文件的一個好方法是'FileSystemObject'。要在VBA這可需要將引用添加到它:
(選擇工具\ References菜單在引用對話框中,選擇「Microsoft腳本運行」。)
下面的代碼示例將讀取所有文件夾中的文件,一次一行地讀取它們的內容,將每行分割成|分隔位,並將這些位寫入從單元格A1開始的活動工作表,每行一行。
Sub ReadFilesIntoActiveSheet()
Dim fso As FileSystemObject
Dim folder As folder
Dim file As file
Dim FileText As TextStream
Dim TextLine As String
Dim Items() As String
Dim i As Long
Dim cl As Range
' Get a FileSystem object
Set fso = New FileSystemObject
' get the directory you want
Set folder = fso.GetFolder("D:\YourDirectory\")
' set the starting point to write the data to
Set cl = ActiveSheet.Cells(1, 1)
' Loop thru all files in the folder
For Each file In folder.Files
' Open the file
Set FileText = file.OpenAsTextStream(ForReading)
' Read the file one line at a time
Do While Not FileText.AtEndOfStream
TextLine = FileText.ReadLine
' Parse the line into | delimited pieces
Items = Split(TextLine, "|")
' Put data on one row in active sheet
For i = 0 To UBound(Items)
cl.Offset(0, i).Value = Items(i)
Next
' Move to next row
Set cl = cl.Offset(1, 0)
Loop
' Clean up
FileText.Close
Next file
Set FileText = Nothing
Set file = Nothing
Set folder = Nothing
Set fso = Nothing
End Sub
子是故意簡化以保持清醒(我希望),需要的工作進行穩健(如添加錯誤處理)
對於那些希望用Tab分隔的用戶使用vbTab而不是「|」 – kunaguvarun
首先加入他們的行列,並導入結果呢? –