PDA

View Full Version : อยากทราบการดึงข้อมูลจาก Text files หลายๆไฟล์ ลง Excel ครับ



beerku
26 May 2007, 23:05
สมมติในโฟลเดอร์มี Text files อยู่ครับ แต่ชื่อไฟล์แต่ละไฟล์ไม่เหมือนกันครับ เช่น
A1.txt , A2.txt , A3.txt
B15.txt ,B20.txt
C30.txt
รวมหกไฟล์ (ความจริงเยอะกว่านี้ครับ เป็นร้อยไฟล์เลยครับ) โดยทุกไฟล์ข้อมูลข้างในเหมือนกันครับ มี ชื่อ นามสกุล เบอร์โทร 3ฟิลด์ครับ แบ่งฟิลด์ด้วยเครื่องหมายสเปซ พอดีเป็นไฟล์ที่สร้างจาก PHP ครับ แต่จะเอามาลงใน Excel ซึ่งถ้าจะก๊อบปี้ข้อมูลแต่ละไฟล์มาไว้ใน Excel จะเสียเวลานานมากครับ มีวิธีใดบ้างครับที่สามารถดึงข้อมูลใน Text Files ทั้งหมดในโฟลเดอร์นี้มาลง Excel ได้ครับ ผมใช้เมนู ข้อมูล -> นำเข้าข้อมูลจากภายนอก ก็ได้แค่ทีละไฟล์ครับ
ขอบพระคุณมากครับ

สมเกียรติ
27 May 2007, 09:28
ลองแนบตัวอย่างง่ายๆสั้นๆมีแค่ 2-3 รายการมาดูกันหน่อยครับ ขอให้ทำตัวอย่าง text file 3 files และ xls ที่ต้องการคำตอบมารวมกันว่าหน้าตาที่ต้องการเป็นอย่างไร

zip รวมกันมาก็ได้ครับ

beerku
27 May 2007, 10:18
ส่งตัวอย่างมาให้แล้วครับ ขอบพระคุณมากครับอาจารย์สมเกียรติ

chatchat
27 May 2007, 20:53
คุณ beerku ลองดูตามไฟล์แนบนี้นะครับ
ผมเขียน VBA โดยการ record macro จากการใช้ function import data นี่แหละครับ แล้วเพิ่มเติมในส่วนของ การค้นหาไฟล์ .txt ทั้งหมด ใน folder ที่กำหนด ว่ามีกี่ไฟล์ จากนั้น ก็จัดการ import data ใน text file นั้น มาเรียงใน cell ที่ต้องการ
สิ่งที่คุณต้องทำคือ เปลี่ยน ชื่อ folder ที่เก็บ ไฟล์ เป็นของคุณเอง โดยใน code ให้เปลี่ยนบรรทัดที่เขียนว่า .LookIn = "C:\Data_Folder" ให้เปลี่ยนเป็นที่อยู่ folder ของคุณเอง
ถ้าคุณเรียก folder ผิด หรือ ไม่มี ไฟล์ .txt อยู่ใน folder นั้น ตัวโปรแกรมก็จะแจ้งว่าไม่เจอไฟล์นะครับ
สงสัย code ส่วนไหน ทำงานอย่างไร ก็สอบถามได้นะครับ



Sub GetFile()
Columns("A:D").Select
Selection.ClearContents
Range("A1").Select
Set fs = Application.FileSearch
Dim path As String
With fs
.LookIn = "C:\Data_Folder"
.Filename = "*.txt"
If .Execute > 0 Then
MsgBox "There were " & .FoundFiles.Count & _
" file(s) found."
For i = 1 To .FoundFiles.Count

path = .FoundFiles(i)
'==============
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" & path, _
Destination:=Range("A" & i + 1))
.Name = "DataSheet"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 874
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With

'==============

Next i
Else
MsgBox "There were no files found."
End If
End With
End Sub

beerku
27 May 2007, 22:36
ทำได้แล้วครับ ขอบพระคุณคุณ chatchat มากเลยครับ