Đổi tên file

Liên hệ QC
Tham gia
14/9/12
Bài viết
312
Được thích
68
Nghề nghiệp
VT
Công việc của tôi là cần đổi tên 1 số file sau khi chụp thành 1 tên mới cho dễ tìm kiếm. Không biết excel có thực hiện được công việc này không. Anh chị nào có cách xin hãy chỉ giùm.
 

File đính kèm

  • Doi_ten.rar
    251.9 KB · Đọc: 115
Công việc của tôi là cần đổi tên 1 số file sau khi chụp thành 1 tên mới cho dễ tìm kiếm. Không biết excel có thực hiện được công việc này không. Anh chị nào có cách xin hãy chỉ giùm.
Bài này đơn giản, chỉ vài dòng code là được nhưng tên file có dấu tiếng việt thì thua rồi. Thêm nữa định dạng đuôi file của bạn trật lất rồi. Bạn cho view hết extension lên thì rõ.
Nếu bạn đặt tên file tại cột B không có dấu tiếng việt và đinh dạng file trùng khớp thì code này có lẻ chạy được
PHP:
Sub doitenfile()
On Error GoTo thongbao
Dim Nguon(), I As Long, path As String
Nguon = Range([B2], [B65536].End(3)).Resize(, 2).Value
path = ThisWorkbook.path & "\"
For I = 1 To UBound(Nguon)
   With CreateObject("Scripting.FileSystemObject")
      .Movefile path & Nguon(I, 1), path & Nguon(I, 2)
   End With
Next
Exit Sub
thongbao: MsgBox "Loi tai file " & I
End Sub
 
Lần chỉnh sửa cuối:
Toàn bộ file của bạn là .png, nếu bạn view extension lên thì sẽ thấy thế này 946.jpg.png >>> Code không tìm được file 946.jpg để đổi tên
À ra vậy. Cảm ơn anh, tôi đã thử với file.xls thì thấy hoạt động tốt. Nhưng anh cho hỏi sao các file như jpeg cũng không đổi được nhỉ. Mà chụp bằng điện thoại thì toàn file jpeg vậy nên làm thế nào.
 
Nhưng anh cho hỏi sao các file như jpeg cũng không đổi được nhỉ. Mà chụp bằng điện thoại thì toàn file jpeg vậy nên làm thế nào

Ý bạn là thế nào thì nên viết cụ thể chút. Tên thì đổi thế nào mà chả được.

Những tập tin bạn gửi trong bài #1 là PNG. Tôi không nói chúng là PNG vì thấy "đuôi" là PNG. Chuyện nhìn mặt để đoán ở thời đại trai mặc váy tô môi không chắc chắn. Tôi nói là PNG vì lõi đúng là PNG.
BMP khi chuột phải và mở bằng Hex Editor thì bạn sẽ thấy ở đầu có "BM", JPG/Jpeg sẽ có "JFIF" ở gần đầu, PNG sẽ có "PNG" ở bai 2, 3, 4, EMF có EMF gần đầu, GIF có GIF ở 3 bai đầu

Đó là những đặc điểm nhận dạng. Không thể mặc váy tô môi là thành chân dài được. Vì khi lột đồ ra thì lõi thế nào nhìn thấy hết.
 
Lần chỉnh sửa cuối:
BMP khi chuột phải và mở bằng Hex Editor thì bạn sẽ thấy ở đầu có "BM", JPG/Jpeg sẽ có "JFIF" ở gần đầu, PNG sẽ có "PNG" ở bai 2, 3, 4, EMF có EMF gần đầu, GIF có GIF ở 3 bai đầu. Đó là những đặc điểm nhận dạng.

Kiến thức của em còn nông lắm, như anh nói trên thì em rất muốn hiểu nhưng vẫn chưa hiểu hết được, vẫn còn lơ mơ lắm, em sẽ tìm hiểu thêm, mong anh đừng nản nhé: "Tưới mãi cũng ngấm" mà.

Ý bạn là thế nào thì nên viết cụ thể chút. Tên thì đổi thế nào mà chả đươc.

Ý của em chỉ muốn là:
- Cột B chứa tên các file mà các file này đang chứa trong thư mục "Doi_ten".
- Cột C chứa tên các file sau khi đổi
(có nghĩa là: sau khi bấm vào nút đổi tên thì file có tên trong cột B đổi thành file có tên như trong cột C. Và vẫn nằm trong thư mục Doi_ten).
Như trên Anh quanghai1969 làm giúp em thấy cũng được rồi, còn phần trang trí cho tiện và đẹp. Nếu anh có ý tưởng gì bổ xung thêm để file của em khả dụng hơn - xin anh bổ xung.
Về phần tiếng việt thì em không đặt tên tiếng việt nên phần này không cần thiết lắm.
Rất cảm ơn anh. Cảm ơn các anh.
 
Ban tham khảo File đính kèm.

Cách thực hiện

1/ Bấm GetFile => Sẽ liệt kê tên file trong côt C

2/ Đổi tên mong muốn vào cột D

3/ Bấm Rename
 

File đính kèm

  • Rename.xlsm
    22.6 KB · Đọc: 288
Lần chỉnh sửa cuối:
Ban tham khảo File đính kèm.

Cách thực hiện

1/ Bấm GetFile => Sẽ liệt kê tên file trong côt C

Cảm ơn anh. Hơn cả mong đợi rồi. Nhưng anh giúp Save As với xls 2003 được không vì máy em không converted được. Mà anh cho hỏi thêm biểu tượng file dấu "!" màu vàng đó là file như thế nào, có phải excel 2013 không?
 
Lần chỉnh sửa cuối:
Cảm ơn anh. Hơn cả mong đợi rồi. Nhưng anh giúp Save As với xls 2003 được không vì máy em không converted được. Mà anh cho hỏi thêm biểu tượng file dấu "!" màu vàng đó là file như thế nào, có phải excel 2013 không?
Bạn đã mở được file thì tại sao lại không Save as được nhỉ? Bạn tải file bên dưới nhé.
Biểu tượng như bạn nhìn thấy là của định dạng .xlsm, là định dạng file có lưu được macro, đã có từ Excel 2007.

Mà anh chàng dhn46 này cũng ác thiệt, đã đưa code cho người khác thì cứ mở để người khác còn tham khảo học hỏi chứ nhỉ, ai lại khóa lại thế?!
 

File đính kèm

  • Rename.xls
    44 KB · Đọc: 84
Bạn đã mở được file thì tại sao lại không Save as được nhỉ? Bạn tải file bên dưới nhé.
Biểu tượng như bạn nhìn thấy là của định dạng .xlsm, là định dạng file có lưu được macro, đã có từ Excel 2007.

Vâng cảm ơn anh. Khi mở thấy cảnh báo, tiếng Anh lại không đọc được hết nên không hiểu hết thông báo gì, sợ bị lỗi.
 
Mà em vừa thử thì đúng là không save as 2003 được thật. save as 2007 thì được. Chắc tại máy em thôi.
 
Bạn đã mở được file thì tại sao lại không Save as được nhỉ? Bạn tải file bên dưới nhé.
Biểu tượng như bạn nhìn thấy là của định dạng .xlsm, là định dạng file có lưu được macro, đã có từ Excel 2007.

Mà anh chàng dhn46 này cũng ác thiệt, đã đưa code cho người khác thì cứ mở để người khác còn tham khảo học hỏi chứ nhỉ, ai lại khóa lại thế?!
Ơ em không để ý anh Nghĩa Phúc ạ. Cái File này em viết lâu rồi dùng ở cơ quan nên cứ post lên thôi.
Em sửa tại Link bài trước nhé.

Cảm ơn anh nhắc nhở :)
 
Không phải, em đã tải rồi. Là em muốn thử save xem có vấn đề gì không thôi. Cảm ơn các anh.
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, em sẽ lưu lại để nghiên cứu .
 
Lần chỉnh sửa cuối:
Bổ xung thêm

File này rất tiện lợi rồi nhưng mình muốn thuận tiện hơn 1 chút nữa. Nên muốn sửa code mà không biết sửa chỗ nào và sửa cái gì.
Thôi thì gửi lên đây nhờ các A/C giúp đỡ.
 

File đính kèm

  • Doi ten file.xlsm
    19.9 KB · Đọc: 95
File này rất tiện lợi rồi nhưng mình muốn thuận tiện hơn 1 chút nữa. Nên muốn sửa code mà không biết sửa chỗ nào và sửa cái gì.
Thôi thì gửi lên đây nhờ các A/C giúp đỡ.
Tôi thấy tác giả viết file này như vậy là hợp lý. Vì tên file và phần mở rộng là do người sử dụng quyết định.
VD: bạn muốn đổi "Toan.xls" thành "Sach huong dan.xls"
Còn tôi muốn đổi thành "Sach huong dan.xlx"
Còn theo nhu cầu của sử dụng bạn thì bạn có thể nhập công thức vào ô D2 =E2&RIGHT(C2,4) rồi Fill xuống là xong
 
Web KT
Back
Top Bottom