เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Results 1 to 9 of 9

Thread: ต้องการใช้ VBA เพื่อ rename file ที่อยู่ใน folder เดียวกันกับไฟล์ excel

  1. #1
    pop2pop
    Guest

    ต้องการใช้ VBA เพื่อ rename file ที่อยู่ใน folder เดียวกันกับไฟล์ excel

    ผมมีโปรแกรม karaoke และเพลงในรูปแบบชื่อไฟล์เป็น
    ชื่อเพลง - ชื่อนักร้อง.DAT
    ซึ่งการจะเพิ่มเพลงทำได้โดยวิธีสร้างไฟล์ index 1 ไฟล์ สมมุติว่าชื่อไฟล์ 0001.snf
    ซึ่งไฟล์นี้จะมีข้อมูลรายละเอียดของเพลงข้างต้น ซึ่งจะต้องกำหนดชื่อเพลงใหม่เป็น 0001.DAT ด้วย แต่การเพิ่มเพลงนั้น นั่งทำทีละเพลงคงจะไม่ไหว
    ผมจึงใช้ excel ช่วยในการสร้างไฟล์ INDEX ได้แล้ว ติดอยู่ที่ไม่รู้คำสั่งในการ RENAME ไฟล์เพลงที่อยู่ใน รูปแบบ ชื่อเพลง - ชื่อนักร้อง.DAT ให้กลายเป็น 0001.DAT
    ซึ่งอยู่ใน Folder เดียวกันกับไฟล์ Excel อันนี้ ปัจจุบันผมก็ต้องนั่ง RENAME เองทุกครั้ง ซึ่งจะมีปัญหาว่า ถ้าบางทีทำครั้งละหลายๆไฟล์ จะทำให้สับสนในการRENAME ชื่อของเพลงให้ตรงกับไฟล์ INDEX

    จึงรบกวนผู้รู้ช่วยแนะนำวิธีเพิ่มโค๊ด VBA ในไฟล์ให้หน่อยครับ
    ไฟล์ใหญ่กว่า 48.8 KB ครับ ถ้าฝากไฟล์กับเว็บอื่น ผิดกฎไหมครับ?
    http://load1.uploadfile.biz/get.php?...092009pm215839

  2. #2
    pop2pop
    Guest
    การใช้ไฟล์ excel
    ผมจะเข้าไปใน windows explorer เพื่อ copy ชื่อไฟล์เต็มๆพร้อมนามสกุล
    แล้วนำไปวางในเซลล์ A26 แล้วเลือกว่าชื่อเพลงขึ้นก่อน หรือนักร้องขึ้นก่อน
    สามารถเพิ่มชื่ออัลบัมได้ใน B5 แล้วก็กดปุ่ม"เพิ่มเพลง"
    จะมีไฟล์ INDEX เกิดขึ้นที่ Folder ที่กำหนดไว้ที่เซลล์ D2

    ชื่อไฟล์INDEX และชื่อเพลงจะเก็บเป็นฐานข้อมูลในแท็บ"LIST"เพื่อสามารถพิมพ์ออกมาได้

  3. #3
    gaka
    Guest
    ผมเคยเขียน vba ที่เข้าไปยังแฟ้มที่กำหนด และทำการ List ชื่อไฟล์ที่มีทั้งหมดออกมาใส่ใน เซล เรียงลำดับ ลองหาใน Search ดูแล้วกัน ถ้าคุณพอจะแกะ VBA ได้ทดลองแกะทำความเข้าใจจะได้ปรับเข้ากับสิ่งที่คุณจะทำได้ครับ

  4. #4
    pop2pop
    Guest
    Quote Originally Posted by gaka View Post
    ผมเคยเขียน vba ที่เข้าไปยังแฟ้มที่กำหนด และทำการ List ชื่อไฟล์ที่มีทั้งหมดออกมาใส่ใน เซล เรียงลำดับ ลองหาใน Search ดูแล้วกัน ถ้าคุณพอจะแกะ VBA ได้ทดลองแกะทำความเข้าใจจะได้ปรับเข้ากับสิ่งที่คุณจะทำได้ครับ
    ต้องขอโทษทีครับ พอดีผมลืมบอกพื้นฐานว่า ความรู้ VBA ของผมค่อนข้างจะเล็กๆน้อยๆจริงๆ จำโค๊ดคนอื่นมาเป็นส่วนใหญ่ แต่ก็ได้ได้เรียนรู้เพิ่มขึ้นจากตัวอย่างก็น่าจะดีมากครับ
    แต่ว่าผมลอง search ดู แต่คงจะไม่ถูกคีย์เวิร์ด เลยไม่เจอกระทู้ที่คุณเขียนไว้ ถ้าจะกรุณา รบกวนบอกชื่อกระทู้ หรือว่า สามารถหาจาก คีย์เวิร์ดคำไหนครับ

    ขอบคุณครับ

  5. #5
    อรวีร์
    Guest

    Smile

    ลองดูตัวอย่าง Code ค่ะ
    Code:
    Sub RenameFile( )
    Dim NowPath  As String, OldName As String, NewName As String
    Dim Row As Long
    NowPath = ThisWorkbook.Path
    Sheets("List").Select
    For Row = 2 To 16
        OldName = NowPath & "\" & Cells(Row, 2) & " - " & Cells(Row, 3) & ".DAT"
        NewName = NowPath & "\" & Cells(Row, 1) & ".DAT"
        ' MsgBox OldName & " --> " & NewName
        Name OldName As NewName
    Next
    End Sub
    Help ของคำสั่ง Name ค่ะ
    Name Statement
    Renames a disk file, directory, or folder.

    Syntax
    Name oldpathname As newpathname
    The Name statement syntax has these parts:
    Part - - - - - - - Description
    oldpathname - - -Required. String expression that specifies the existing file name and location — may include directory or folder, and drive.
    newpathname - - Required. String expression that specifies the new file name and location — may include directory or folder, and drive. The file name specified by newpathname can't already exist.

  6. #6
    HS8MQM
    Guest

    List File in Directory

    Quote Originally Posted by pop2pop View Post
    Sub ShowFiles()
    Dim aFile()
    'cPath = ActiveWorkbook.path
    'cPath = CurDir
    cPath = GetDirectory()
    If cPath = "" Then Exit Sub
    If GetFileDir(cPath, aFile) = 0 Then Exit Sub
    Rem: list files in activeworksheet
    Cells.Clear
    Cells(3, 2).Value = cPath
    For i = 1 To UBound(aFile)
    Cells(3 + i, 2).Value = aFile(i)
    Next i
    End Sub
    Private Function GetFileDir(cPath, aFile) As Integer
    If Right(cPath, 1) <> "\" Then cPath = cPath & "\"
    i = 0
    Rem: get files in cPath (1-level)
    lcFilename = Dir(cPath, vbDirectory)
    Do While lcFilename <> ""
    If lcFilename <> "." And lcFilename <> ".." Then
    If (GetAttr(cPath & lcFilename) And vbDirectory) <> vbDirectory Then
    i = i + 1
    ReDim Preserve aFile(i)
    aFile(i) = lcFilename
    End If
    End If
    lcFilename = Dir
    Loop
    If i = 0 Then
    GetFileDir = 0
    Else
    Rem: sort array
    n = UBound(aFile)
    For i = 1 To n - 1
    For j = i + 1 To n
    If UCase(aFile(j)) < UCase(aFile(i)) Then
    lcTemp = aFile(j)
    aFile(j) = aFile(i)
    aFile(i) = lcTemp
    End If
    Next j
    Next i
    GetFileDir = n
    End If
    End Function
    ลองดูนะครับ List ชื่อ File ใน Directory File ครับ ผมเองก็ VBA ได้เล็กน้อย
    ไม่ได้เขียนเองครับ จำไม่ได้แล้วว่าได้ code มาอย่างไร แต่ขอนำมาแชร์เป็นความรู้ให้กับผู้อื่นนะครับ (ไม่ได้เพื่อหาประโยชน์ส่วนตัวครับ)
    วิธีการคือ
    1. สร้างปุ่ม Macro
    2. Copy code ไปวาง
    3. เมื่อกดปุ่มจะปรากฎ หน้าต่าง Window ให้เลือก Directory ที่เราต้องการ List ชื่อ File ออกมาครับ
    อัฑฒ์

  7. #7
    pop2pop
    Guest
    ขอบคุณทุกคำตอบครับ จะลองนำไปใช้ดูครับ
    ถ้าออกมาเสร็จแล้ว จะนำมาแบ่งให้ทุกท่านที่สนใจ ดาวน์โหลดไปใช้กันครับ

  8. #8

  9. #9
    pop2pop
    Guest
    มาเห็นช้าไปหน่อยครับพอดีนั่ง search ในเว็บ แล้วลองผิดลองถูกอยู่นานก็ได้อยู่เหมือนกัน แต่ขอบคุณมากครับ

Similar Threads

  1. Replies: 2
    Last Post: 21 Apr 2009, 16:10
  2. Replies: 6
    Last Post: 31 Mar 2009, 14:48
  3. Replies: 2
    Last Post: 21 Jan 2009, 18:11
  4. การจัดการ File and Folder
    By supatsiri_c in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 10 Oct 2008, 10:59
  5. เช็ค exist folder in excel
    By nungaor in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 7 Apr 2008, 22:18

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •