snasui.com ยินดีต้อนรับ ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
มีข้อมูลอยู่ประมาณ 5000 record แยกเป็นไฟล์ ประมาณ 80 กว่า file ซึ่งแต่ละ file จำนวนไม่เท่ากัน น้อยบ้าง มากบ้าง ลอง run ดู ใช้เวลานานพอสมควร พอจะมีวิธีให้ run เร็วกว่านี้ไหมคะ ผ่านไป 10 นาที เพิ่งจะได้ออกมา ประมาณ 10 file
Code ตัวอย่างตามข้างล่างคะ (code จาก forum นำมาปรับใช้คะ)
Option Explicit
Sub SeparateFile()
Dim fName As String, i As Integer
Dim wbs As Workbook, Nwbs As Workbook
Set wbs = ActiveWorkbook
With Application
.ScreenUpdating = False
.DisplayAlerts = False
wbs.Sheets("Entry List").Range("Q7", Range("Q" & Rows.Count)).ClearContents
wbs.Sheets("Entry List").Range("C5:" & "C" & Rows.Count).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:="", CopyToRange:=Range("Q7"), Unique:=True
For i = 1 To Range("R5").Value
Range("Q6") = Range("Q8", Range("Q" & Rows.Count).End(xlUp))(i)
Set Nwbs = Workbooks.Add
wbs.Sheets("Entry List").Range("1:4").Copy
Nwbs.Activate
Range("A1").Select
ActiveSheet.Paste
wbs.Sheets("Entry List").Range("A5:P" & Rows.Count).AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=wbs.Sheets("Entry List").Range("Q5:Q6"), CopyToRange:=Range("A5")
Range("A1").Select
fName = Range("C6")
ChDir "D:\"
Nwbs.SaveAs Filename:="D:\" & fName
MsgBox fName & " ºÑ¹·Ö¡¢éÍÁÙÅàÃÕºÂÃéÍÂáÅéǤèÐ"
Nwbs.Close
Next i
.ScreenUpdating = True
End With
End Sub