กฏกติกาของฟอรัม : แจ้งชื่อและนามสกุลจริงในการสมัครสมาชิก--ตั้งชื่อกระทู้ให้ตรงกับปัญหาที่ถาม--เขียนอธิบายคำถามทั้งในตัวกระทู้และในแฟ้มแนบให้ละเอียด--ห้ามใช้คำว่า อ่ะ คับ หรือคำผวน หรือคำที่ไม่มีในพจนานุกรมไทย--โปรดตั้งชื่อแฟ้มให้สื่อถึงปัญหาที่ถาม--อย่าระบุชื่อให้คนใดคนหนึ่งเป็นผู้ตอบ--งดให้ความร่วมมือหรือช่วยตอบคำถาม กระทู้ที่ละเมิดกฏกติกาของฟอรัม
View RSS Feed

excel_fever

เปลี่ยนชื่อไฟล์ทีละมาก ๆ ด้วย VBA

Rate this Entry
เป็นการต่อยอดจากการ List รายชื่อไฟล์ทั้งหมดใน Folder
http://www.excelexperttraining.com/f...ght=list+files

Sub ListFiles()
Dim Fs, F, F1, Fc
Dim Source_Folder

Source_Folder = Cells(1, 1).Value
Set Fs = CreateObject("Scripting.FileSystemObject")
Set F = Fs.GetFolder(Source_Folder)
Set Fc = F.Files

Y = 4

Range("b4:e65536").ClearContents


For Each F1 In Fc
Cells(Y, 2).Value = F1.Name
Cells(Y, 4).FormulaR1C1 = "=R1C4&""-""&RC[-1]&TEXT(R2C4,""mmyyyy"")&"".pdf"""
Y = Y + 1
Next
End Sub

ด้วยรหัสข้างต้นจะได้ชื่อไฟล์ทั้งหมดที่คอลัมน์ B พร้อมทั้งเติมสูตรสำหรับกำหนดชื่อไฟล์ใหม่ไว้ที่คอลัมน์ D
Name:  Untitled.jpg
Views: 1073
Size:  40.3 KB
โดยที่ D1 เติมอักษรของแผนก
D2 เดือนที่ต้องการ
หลังจากนั้นก็เติมวันที่ลงในคอลัมน์ C (ควรใช้ Data Validation ป้องกันการกรอกวันที่ซ้ำด้วย เพื่อป้องกันชื่อไฟล์ซ้ำกัน)

Name:  Untitled2.jpg
Views: 1075
Size:  42.3 KB
โดยหลังจากที่กรอกวันที่ในคอลัมน์ C จนครบแล้วก็ถึงขั้นตอนการเปลี่ยนชื่อไฟล์ด้วยรหัส
Sub ChangeFilesName()
Dim Fs, F, F1, Fc
Dim Source_Folder

Source_Folder = Cells(1, 1).Value
Set Fs = CreateObject("Scripting.FileSystemObject")
Set F = Fs.GetFolder(Source_Folder)
Set Fc = F.Files

Y = 4

For Each F1 In Fc
F1.Name = Cells(Y, 4).Value
Y = Y + 1
Next
End Sub

ด้วยเหตุผลที่ว่า ไฟล์ที่ถูก List ชื่อมานั้นจะเรียงลำดับตามลำดับการสแกนก่อนหลังอยู่แล้วจึงไม่มีปัญหาเรื่องจำไฟล์ไม่ได้ (ไฟล์ที่อยู่บนสุดคือไฟล์ที่ถูกสแกนเข้ามาก่อน)
เมื่อเปลี่ยนชื่อไฟล์เสร็จแล้วก็ย้ายไปเก็บในที่ที่ต้องการ ซึ่งหารหัสได้จาก Internet
ก็ยังมีคำถามตามมาอีกว่า "มีวิธีที่ไม่ต้องสแกนมั๊ย"
"มีครับ ก็ไม่ต้องเขียน ใช้การเติมค่าลงในแบบฟอร์ม แล้วสร้างเป็น PDF แทน"
ช้าเข้าไปอีก

Submit "เปลี่ยนชื่อไฟล์ทีละมาก ๆ ด้วย VBA" to Facebook Submit "เปลี่ยนชื่อไฟล์ทีละมาก ๆ ด้วย VBA" to Twitter Submit "เปลี่ยนชื่อไฟล์ทีละมาก ๆ ด้วย VBA" to Digg Submit "เปลี่ยนชื่อไฟล์ทีละมาก ๆ ด้วย VBA" to del.icio.us Submit "เปลี่ยนชื่อไฟล์ทีละมาก ๆ ด้วย VBA" to StumbleUpon Submit "เปลี่ยนชื่อไฟล์ทีละมาก ๆ ด้วย VBA" to Google

Updated 18 Apr 2011 at 12:40 by excel_fever

Categories
Excel VBA and Add-Ins , ‎ Computer and Programming

Comments