Đổi tên file

Liên hệ QC
Em phải đăng nhập để like cho bác cái. Excel gà có cái này dùng tiện quá :)
 
Nói chung việc đổi tên File thì tôi góp ý như thế này:

1/ Thông thường người ta chỉ đổi tên File khi File đó do phần mềm xuất ra.
Lý do: Trong hệ thống phần mềm sẽ có Mã và số hồ sơ theo năm và tên File được liên kết với số hồ sơ nên không bị ảnh hưởng, nhưng khi xuất File ra một Folder nào đó thì nó sẽ trùng lắp tên File (ví dụ: KT 01, KT 01 (1), KT 01 (2), KT 01 (3) ............)Chính vì điều này nên cần đổi tên File.

2/ Người ta chỉ đổi tên File khi cần thiết, chứ không nên tùy tiện đổi tên File (nhất là tên File có dấu tiếng Việt), dễ bị phát sinh lỗi và đôi khi cần thiết thì không thể mở được.
 
Bạn ứng dụng được công việc là vui rồi. Tại bài trước tôi chưa mở pass VBA (cũng do sơ suất vì file đã viết từ lâu), tôi đã sửa bài trước mở pass rồi (Pass chỉ là "bịp" người mới thui). Dưới đây là toàn bộ Code nếu bạn muốn tìm hiều
Mã:
'Get all file name in folder using
'==================================
Option Explicit
Dim i As Long
Dim Arr(1 To 10000, 1 To 3)




Function Getfile(Linkfolder As String)
    Dim sFolder As Object    'SubFolder
    Dim sfi As Object   'Subfolder of SubFolder
    Dim fi  As Object   'File
    With CreateObject("Scripting.filesystemobject")
        Set sFolder = .GetFolder(Linkfolder).SubFolders
        If sFolder.Count > 0 Then
            'If have files on Linkfolder then Get File Name
            If .GetFolder(Linkfolder).Files.Count > 0 Then
                For Each fi In .GetFolder(Linkfolder).Files
                    If Left(fi.Name, 1) <> "~" Then
                        i = i + 1
                        Arr(i, 1) = i
                        Arr(i, 3) = fi.Name
                        Arr(i, 2) = Linkfolder
                    End If
                Next
            End If
            'De quy
            For Each sfi In sFolder
                Getfile (sfi)
            Next
        Else
            'Get FileName on the Sub Folder
            For Each fi In .GetFolder(Linkfolder).Files
                'Exclude Temporary file
                If Left(fi.Name, 1) <> "~" Then
                    i = i + 1
                    Arr(i, 1) = i
                    Arr(i, 3) = fi.Name
                    Arr(i, 2) = Linkfolder
                End If
            Next
        End If
    End With
End Function


Sub GetFilename()
    Dim source As String
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Show
        .AllowMultiSelect = False
        source = .SelectedItems(1)
    End With
    i = 0
    Getfile (source)
    Sheet1.Range("A2:D65536").ClearContents
    Sheet1.Range("A2").Resize(i, 3) = Arr
End Sub


Sub Rename()
    On Error Resume Next
    Dim source As String, RenameArr
    Dim t   As Long
    RenameArr = Sheet1.Range("A2:D" & Sheet1.Range("B65536").End(3).Row)
    With CreateObject("Scripting.filesystemobject")
        For t = 1 To UBound(RenameArr)
            .MoveFile RenameArr(t, 2) & "\" & RenameArr(t, 3), RenameArr(t, 2) & "\" & RenameArr(t, 4)
        Next
    End With
    MsgBox "Finish", vbInformation
End Sub

cảm ơn anh. nhưng em gfặp phải vấn đề khi chạy code rename này. là nếu không nhập đuôi file cho newname thì nó sẽ đổi ra file ko đuôi :D
mà nếu nhập đuôi cho cả trăm file thì lại thủ công quá.
các anh cho em hỏi trong vbcode trên, em muốn mặc định đuôi file newname xuất ra là .jpg hoặc đơn giản là đuôi file cũ thế nào thì đuôi file mới như thế. thì sửa code sửa ở chỗ nào ah? e ko rành code này lắm các anh chỉ giúp vì foder e vài trăm cái ảnh mà copy past cái đuôi file.jpg vào newname thấy nó vất quá @@
 
Web KT
Back
Top Bottom