Đổi tên Folder (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

tedaynui

(*_*)
Thành viên danh dự
Tham gia
12/8/06
Bài viết
1,875
Được thích
2,482
Chào các bạn.
Mình viết 1 code nhỏ để đổi tên Folder. Khi tên Folder (không dấu) thì code chạy tốt
PHP:
Sub Test1()
  Dim OldName As String, NewName As String
  OldName = "C:\Temp"
  NewName = "C:\Nguyen"
  Name OldName As NewName
End Sub
Nhưng khi tên Folder (Tiếng Việt có dấu) thì codes bị lỗi
PHP:
Sub Test2()
  Dim OldName As String, NewName As String
  OldName = "C:\Nguy" & ChrW(7877) & "n"    'Nguyễn
  NewName = "C:\Nguyen"
  Name OldName As NewName
End Sub
Mong được các bạn giúp đỡ.
Xin cảm ơn
TDN
 
Chào các bạn.
Mình viết 1 code nhỏ để đổi tên Folder. Khi tên Folder (không dấu) thì code chạy tốt
PHP:
Sub Test1()
  Dim OldName As String, NewName As String
  OldName = "C:\Temp"
  NewName = "C:\Nguyen"
  Name OldName As NewName
End Sub
Nhưng khi tên Folder (Tiếng Việt có dấu) thì codes bị lỗi
PHP:
Sub Test2()
  Dim OldName As String, NewName As String
  OldName = "C:\Nguy" & ChrW(7877) & "n"    'Nguyễn
  NewName = "C:\Nguyen"
  Name OldName As NewName
End Sub
Mong được các bạn giúp đỡ.
Xin cảm ơn
TDN
Up bài này lên cho anh Phước. Mình cũng bị bí vụ này mà chưa biết mần sao nữa.
 
Upvote 0
Up bài này lên cho anh Phước. Mình cũng bị bí vụ này mà chưa biết mần sao nữa.

Với tất cả ứng dụng liên quan đến File, Folder, hãy dùng Scripting.FileSystemObject nhé
Sửa sub trên thành:
Mã:
Sub Test2()
  Dim fso As Object
  Set fso = CreateObject("Scripting.FileSystemObject")
  Dim OldName As String, NewName As String
  OldName = "D:\Nguy" & ChrW(7877) & "n"    'Nguye^~n
  NewName = "D:\Nguyen"
  If fso.FolderExists(OldName) Then
    If Not fso.FolderExists(NewName) Then
      fso.MoveFolder OldName, NewName
    Else
      MsgBox "Folder already exists"
    End If
  Else
    MsgBox "Path not found!"
  End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Theo hướng dẫn của anh NDU thì em viết thử code này để loại hết dấu tiếng việt của tên Folder. Anh Phước thử xem sao
Mã:
Sub DoiTenFolder()
    Dim strStartPath As String
    strStartPath = "E:\" 'nhap duong dan chua thu muc can loai bo dau tieng viet
    ListFolder strStartPath
End Sub

'...................................

Sub ListFolder(sFolderPath As String)
On Error Resume Next
Dim FS As Object
Dim FSfolder As Object
Dim Subfolder As Object
Set FS = CreateObject("Scripting.FileSystemObject")
Set FSfolder = FS.GetFolder(sFolderPath)
For Each Subfolder In FSfolder.SubFolders
   DoEvents
   FS.movefolder Subfolder, TV(Subfolder)
Next Subfolder
Set FSfolder = Nothing
End Sub

'...........................................

Function TV(ByVal Text As String) As String
  Dim CharCode, ResText As String, i As Long, tmp As String
  On Error Resume Next
  tmp = Text
  CharCode = Array(ChrW(7855), ChrW(7857), ChrW(7859), ChrW(7861), ChrW(7863), ChrW(7845), ChrW(7847), _
                   ChrW(7849), ChrW(7851), ChrW(7853), ChrW(225), ChrW(224), ChrW(7843), ChrW(227), ChrW(7841), _
                   ChrW(259), ChrW(226), ChrW(273), ChrW(7871), ChrW(7873), ChrW(7875), ChrW(7877), ChrW(7879), _
                   ChrW(233), ChrW(232), ChrW(7867), ChrW(7869), ChrW(7865), ChrW(234), ChrW(237), ChrW(236), _
                   ChrW(7881), ChrW(297), ChrW(7883), ChrW(7889), ChrW(7891), ChrW(7893), ChrW(7895), ChrW(7897), _
                   ChrW(7899), ChrW(7901), ChrW(7903), ChrW(7905), ChrW(7907), ChrW(243), ChrW(242), ChrW(7887), _
                   ChrW(245), ChrW(7885), ChrW(244), ChrW(417), ChrW(7913), ChrW(7915), ChrW(7917), ChrW(7919), _
                   ChrW(7921), ChrW(250), ChrW(249), ChrW(7911), ChrW(361), ChrW(7909), ChrW(432), ChrW(253), _
                   ChrW(7923), ChrW(7927), ChrW(7929), ChrW(7925))
  ResText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooooouuuuuuuuuuuyyyyy"
  For i = 0 To UBound(CharCode)
    tmp = Replace(tmp, CharCode(i), Mid(ResText, i + 1, 1))
    tmp = Replace(tmp, UCase(CharCode(i)), UCase(Mid(ResText, i + 1, 1)))
  Next
  TV = tmp
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
Theo hướng dẫn của anh NDU thì em viết thử code này để loại hết dấu tiếng việt của tên Folder. Anh Phước thử xem sao

Muốn làm bài này e rằng phải tốn thêm nhiều công sức (thêm code)
- Chẳng hạn cái Sub ListFolder(sFolderPath As String) nên cho thêm 1 tham số InSub as Boolean (có bao gồm thư mục con hoặc không?)
- Chẳng hạn tên Folder người ta gõ bằng bảng mã Unicode Tổ hợp thì sao?
 
Upvote 0
Muốn làm bài này e rằng phải tốn thêm nhiều công sức (thêm code)
- Chẳng hạn cái Sub ListFolder(sFolderPath As String) nên cho thêm 1 tham số InSub as Boolean (có bao gồm thư mục con hoặc không?)
- Chẳng hạn tên Folder người ta gõ bằng bảng mã Unicode Tổ hợp thì sao?
Bài này em nuốt không trôi đâu. Đợi anh ra tay thôi.Thật ra em chỉ Edit code. Căn bản bên trong thì em mù tịt.
 
Upvote 0
Bài này em nuốt không trôi đâu. Đợi anh ra tay thôi.Thật ra em chỉ Edit code. Căn bản bên trong thì em mù tịt.

Bài này tôi làm được (vì mọi "đồ chơi" đã có sẵn, chỉ ráp vào là xài). Vấn đề không biết việc loại dấu tiếng Việt trong tên Folder để làm cái gì? (tôi chưa nhìn thấy sự cần thiết của nó). Tuy nhiên có thể gợi ý sơ qua về các "đồ chơi" cần có:
- Code lấy List Folder (tôi đã viết sẵn rồi). Cú pháp hàm này là:
Mã:
Function FilesFoldersList(ByVal RootFolder As String, ByVal ListType As Boolean, ByVal Search As String, ByVal InSub As Boolean)
Trong đó:
RootFolder là thư mục gốc
ListType: = True sẽ lấy list file và =False sẽ lấy list folder
Search: Là từ khóa dò tìm. Ở đây ta tìm toàn bộ nên Search sẽ = "*"
InSub: Đã nói ở trên
- Code loại dấu tiếng Việt: Dùng code của anh siwtom:
http://www.giaiphapexcel.com/forum/...de-page-1258-sang-Unicode&p=522284#post522284
Code này áp dụng được cho cả 2 bảng mã Unicode tổ hợp và dựng sẵn
---------------------
Vậy, nếu đã có 2 "đồ chơi" này rồi thì ráp vào! Giả sử ta có code:
- arr = FilesFoldersList("Tên thư mục", False, "*", True)
- Thì arr sẽ là danh sách các đường dẫn folder có trong "Tên thư mục"
- Giờ dùng vòng lập, duyệt các Item của arr
- Tách lấy phần tên Folder trong đường dẫn (nằm sau dấu "\" cuối cùng) ---> Kết quả là sOldName chẳng hạn
- Dùng code của anh siwtom, loại dấu sOldName, ra được kết quả là sNewName
- Ráp sNewName vào đường dẫn của sOldName
- Dùng MoveFolder (hoặc DOS Command) để đổi tên (từ "Đường dẫn Folder\sOldName" thành "Đường dẫn Folder\sNewName")
.....
Đại khái vậy
 
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn anh NDU va anh QuangHai rất nhiều. Đúng là em đang dự định viết 2 ứng dụng: 1 là loại dấu Tiếng Việt tên Folder và 2 là loại dấu tên File (từ Folder cha đến Folder con và Folder cháu chắt...) nhưng do công lực còn yếu, khi bắt tay vào thì gặp nhiều trở ngại quá, hic hic
Không hiểu sao, hiện nay, rất nhiều người vẫn thích đặt tên Folder và tên File bằng (tiếng Việt có dấu).
Cảm ơn Anh
NDU đã hướng dẫn. Nhưng nếu được nhờ anh NDU ra tay giúp luôn thì hay quá vì cái này em mà gia công chắc phải cả tháng quá (chưa chắc đã xong, hic hic).

TDN
 
Upvote 0
Cảm ơn anh NDU va anh QuangHai rất nhiều. Đúng là em đang dự định viết 2 ứng dụng: 1 là loại dấu Tiếng Việt tên Folder và 2 là loại dấu tên File (từ Folder cha đến Folder con và Folder cháu chắt...) nhưng do công lực còn yếu, khi bắt tay vào thì gặp nhiều trở ngại quá, hic hic
Không hiểu sao, hiện nay, rất nhiều người vẫn thích đặt tên Folder và tên File bằng (tiếng Việt có dấu).
Cảm ơn Anh
NDU đã hướng dẫn. Nhưng nếu được nhờ anh NDU ra tay giúp luôn thì hay quá vì cái này em mà gia công chắc phải cả tháng quá (chưa chắc đã xong, hic hic).

TDN

Loại dấu cho File hay Folder gì thì code cũng viết y chang
Ví dụ ở trên, ta có:
Mã:
arr = FilesFoldersList("Tên thư mục", [COLOR=#ff0000]False[/COLOR], "*", True)
là lấy list Folder
Với list file, sử False thành True
Mã:
arr = FilesFoldersList("Tên thư mục", [COLOR=#ff0000]True[/COLOR], "*", True)
-----------------
Nếu thầy Phước cảm thấy cần thiết, tôi sẽ suy nghĩ về vấn đề này
Hỏi thêm:
- Có cần xây dựng nó thành 1 AddIn không?
- Có cần tạo Menu trên thanh Menu để bấm vào là "mần" luôn
 
Upvote 0
Cảm ơn Anh đã nhiệt tình ủng hộ. Nếu thành Addin thì quá Pro rồi. Với em chỉ mong muốn click vào CommandButton -> hiện ra hộp thoại DirectoryDialogBox -> Click chọn Folder nào thì nó mần sạch Folder đó (kể cả SubFolder).
Một lần nữa cảm ơn Anh nhé.

TDN
 
Upvote 0
dhn46 góp vui với giải pháp sau: (Trong Code có sử dụng công cụ chuyển mã bác Siwtom)
 

File đính kèm

Upvote 0
Nếu thầy Phước cảm thấy cần thiết, tôi sẽ suy nghĩ về vấn đề này
Hỏi thêm:
- Có cần xây dựng nó thành 1 AddIn không?
- Có cần tạo Menu trên thanh Menu để bấm vào là "mần" luôn

Nếu vậy thì thật tuyệt vời, cái này rất cần thiết, thày giúp cho chúng em nhé.
 
Upvote 0
Cảm ơn dhn46, mình đã test: codes chạy rất OK. Tuy nhiên, nếu trong Folder nào đó có chứa 1 file đang mở thì sẽ gặp lỗi (vụ này chắc là phải On Error Resume Next thôi, hi hi). Như vậy, chỉ còn Rename File nữa là như tiên.}}}}}

TDN
 
Upvote 0
Cảm ơn dhn46, mình đã test: codes chạy rất OK. Tuy nhiên, nếu trong Folder nào đó có chứa 1 file đang mở thì sẽ gặp lỗi (vụ này chắc là phải On Error Resume Next thôi, hi hi). Như vậy, chỉ còn Rename File nữa là như tiên.}}}}}

TDN
- Đúng rồi anh, trong môi trường Window thao tác rename bằng tay khi file trong thư mục đang mở cũng sẽ không Asses được, không biết việc thao tác rename khi sử dụng Dos sẽ như thế nào, cái này chắc nhờ thầy Tuấn ra tay.

- Dhn46 sử dụng FileSystemObject với thuật toán đệ quy để làm cái này nhưng có một giải pháp khác là sử dụng MSDos nhúng trong Excel nữa (cái này thầy Tuấn đã có hẳn 1 chương trình List file)

- Việc chuyển thành Function hay Addins cũng không quá khó khăn, mọi người có thể biến đổi một chút là được

Hy vọng file có ích với mọi người!
 
Upvote 0
- Đúng rồi anh, trong môi trường Window thao tác rename bằng tay khi file trong thư mục đang mở cũng sẽ không Asses được, không biết việc thao tác rename khi sử dụng Dos sẽ như thế nào, cái này chắc nhờ thầy Tuấn ra tay.
!

Thì cũng vậy thôi: Tuân thủ quy tắt của Windows mà
---------------------------------------------------
Đã làm xong ứng dụng này cho thầy Phước
Một vài hình ảnh của ứng dụng:
- Nếu mở file trên Excel 2003 thì Toolbar được tạo như hình:

Capture_1.JPG














- Nếu mở file trên Excel 2007 hoặc 2010 thì Toolbar được tạo như hình:

Capture_2.JPG











- Khi bấm vào nút "Rename Files or Folders" trên Toolbar thì cửa sổ chương trình xuất hiện sẽ có dạng:

Capture_3.JPG













- Cách sử dụng cũng khá đơn giản. Hãy bấm nút Help trên Toolbar để biết thêm chi tiết
- Code hơi dài, xin giới thiệu sơ qua về code tạo Toolbar thôi:
Mã:
Public fso As Object
Public oWsh As Object
Private Sub Auto_Open()
  Set fso = CreateObject("Scripting.FileSystemObject")
  Set oWsh = CreateObject("Wscript.Shell")
  ThisWorkbook.DialogSheets("Help").Visible = 2
  BuildBar
End Sub
Private Sub Auto_Close()
  DelBar
  Set fso = Nothing
  Set oWsh = Nothing
End Sub
Private Sub ShowHelp()
  Dim dlg As DialogSheet
  Set dlg = ThisWorkbook.DialogSheets("Help")
  dlg.Show
End Sub
Private Sub BuildBar()
  Dim cBar As CommandBar
  DelBar
  Set cBar = Application.CommandBars.Add("File_Folder_Rename")
  With cBar
   .Position = msoBarTop
   .Visible = True
    With .Controls.Add(msoControlButton)
      .Caption = "Rename Files or Folders"
      .Style = msoButtonIconAndCaption
      .OnAction = "ShowForm"
      .FaceId = 46
    End With
    .Controls.Add (msoControlButton)
    With .Controls.Add(msoControlButton)
      .Caption = "Help"
      .Style = msoButtonIconAndCaption
      .OnAction = "ShowHelp"
      .FaceId = 984
    End With
  End With
End Sub
Private Sub DelBar()
  On Error Resume Next
  Application.CommandBars("File_Folder_Rename").Delete
End Sub
----------------------------
Tôi đính kèm 2 file: RenameFileFolder.xlsm và RenameFileFolder.xls (trong tập tin RenameFileFolder.RAR)để thuận tiện cho các bạn sử dụng.
Các bạn có thể lưu file thành AddIn tùy ý
----------------------------
Nói thêm
- Tôi định cải tiến thêm theo hướng: Khi tiến hành rename, không phải tất cả mọi file hoặc folder đều được rename thành công. Vậy nên tôi dự định sẽ xuất ra 1 list chứa các file (folder) đã rename thành công và 1 list khác chưa các file (folder) đã rename thật bại. Các bạn thấy sao?
- Tôi chưa hài lòng lắm về code. Mong nhận được sự góp ý của các bạn
 

File đính kèm

Upvote 0
Nói thêm - Tôi định cải tiến thêm theo hướng: Khi tiến hành rename, không phải tất cả mọi file hoặc folder đều được rename thành công. Vậy nên tôi dự định sẽ xuất ra 1 list chứa các file (folder) đã rename thành công và 1 list khác chưa các file (folder) đã rename thật bại. Các bạn thấy sao? - Tôi chưa hài lòng lắm về code. Mong nhận được sự góp ý của các bạn
Thưa thày vì sao một số folder không thành công, nguyên nhân do virut hay do nó đang thực thi (đang mở) hay vì nguyên nhân khác ah?
 
Upvote 0
Thưa thày vì sao một số folder không thành công, nguyên nhân do virut hay do nó đang thực thi (đang mở) hay vì nguyên nhân khác ah?

Nhiều nguyên nhân lắm mà 1 nguyên nhân dễ thấy nhất là Folder chứa 1 file nào đó đang mở
Virus cũng có thể có nếu như thằng cha tác giả virus là người Việt, đặt tên folder là tiếng Việt có dấu (vì trong code của tôi, nếu không phải tiếng Việt thì sẽ không thực hiện việc đổi tên)
Và cũng có hàng đống nguyên nhân khác mà chỉ khi làm mới phát hiện ra (tôi cũng không biết hết)
 
Upvote 0
Cảm ơn Anh lắm lắm. Thế này với em là thoả mãn lắm rồi. Codes chạy nhanh, chuẩn (vì em không mở 1 file nào)
Nói thêm
- Tôi định cải tiến thêm theo hướng: Khi tiến hành rename, không phải tất cả mọi file hoặc folder đều được rename thành công. Vậy nên tôi dự định sẽ xuất ra 1 list chứa các file (folder) đã rename thành công và 1 list khác chưa các file (folder) đã rename thật bại. Các bạn thấy sao?
- Tôi chưa hài lòng lắm về code. Mong nhận được sự góp ý của các bạn
Nếu vậy, em nghĩ Anh có thể cho thêm 1 Checkbox hiển thị kết quả. Nếu chọn thì chương trình sẽ hiển thị những File/Folder thành công và những File/Folder không thành công để người dùng biết cái nào không thành công và dễ dàng xử lý thủ công cho triệt để.

Một lần nữa cảm ơn Anh nhé. Với em, thế này là tuyệt vời rồi.

TDN
 
Lần chỉnh sửa cuối:
Upvote 0
Thiệt là sướng không diễn tả nổi, mới chạy trên USB có khoảng 10Gb dữ liệu. Chạy qua chương trình, hiển thị 67 Folders được Rename và 617 Files được Rename. Với số lượng Folder và File này nếu Rename thủ công thì không biết đến bao giờ và mất không biết bao là thời gian... cũng chưa chắc xong (vì quá nhiều Folder và File nằm rãi rác; thủ công làm sao duyệt hết)

Quá đã quá đã, cảm ơn Anh
NDU. Tiếc quá, nút Thanks chỉ có 1.

---------------
Đúng là có nhiều lý do để thực hiện không thành công. Ngoài các lý do đã nêu trên thì đây cũng sẽ là 1 lý do; ví dụ trong cùng cấp Folder có 2 Folder như sau: GIAI PHAP EXCEL GIẢI PHÁP EXCEL khi Rename sẽ bị trùng tên, Pó tay chắc luôn. Tương tự với tên File cũng vậy.

TDN
 
Upvote 0
Thiệt là sướng không diễn tả nổi, mới chạy trên USB có khoảng 10Gb dữ liệu. Chạy qua chương trình, hiển thị 67 Folders được Rename và 617 Files được Rename. Với số lượng Folder và File này nếu Rename thủ công thì không biết đến bao giờ và mất không biết bao là thời gian... cũng chưa chắc xong (vì quá nhiều Folder và File nằm rãi rác; thủ công làm sao duyệt hết)

Quá đã quá đã, cảm ơn Anh
NDU. Tiếc quá, nút Thanks chỉ có 1.

---------------
Đúng là có nhiều lý do để thực hiện không thành công. Ngoài các lý do đã nêu trên thì đây cũng sẽ là 1 lý do; ví dụ trong cùng cấp Folder có 2 Folder như sau: GIAI PHAP EXCEL GIẢI PHÁP EXCEL khi Rename sẽ bị trùng tên, Pó tay chắc luôn. Tương tự với tên File cũng vậy.

TDN
Nếu quá đã thì tạo ra 1 cái gì đó đi. Chẳng hạn 1 độ nhậu đi anh ơi.
 
Upvote 0
Thiệt là sướng không diễn tả nổi, mới chạy trên USB có khoảng 10Gb dữ liệu. Chạy qua chương trình, hiển thị 67 Folders được Rename và 617 Files được Rename. Với số lượng Folder và File này nếu Rename thủ công thì không biết đến bao giờ và mất không biết bao là thời gian... cũng chưa chắc xong (vì quá nhiều Folder và File nằm rãi rác; thủ công làm sao duyệt hết)

Quá đã quá đã, cảm ơn Anh
NDU. Tiếc quá, nút Thanks chỉ có 1.

---------------
Đúng là có nhiều lý do để thực hiện không thành công. Ngoài các lý do đã nêu trên thì đây cũng sẽ là 1 lý do; ví dụ trong cùng cấp Folder có 2 Folder như sau: GIAI PHAP EXCEL GIẢI PHÁP EXCEL khi Rename sẽ bị trùng tên, Pó tay chắc luôn. Tương tự với tên File cũng vậy.

TDN

Mỗi tiện ích, mỗi code của thày Ndu viết, với em luôn có giá trị cao hơn bất cứ phần mềm nào trên mạng có tác dụng tương tự.
 
Upvote 0
Nếu quá đã thì tạo ra 1 cái gì đó đi. Chẳng hạn 1 độ nhậu đi anh ơi.
Phải há, vậy anh Hải chọn địa điểm và thời gian giúp em luôn đi (sao để thuận tiện đường đi các anh). Cũng lâu rồi không gặp mọi người.
Nói làm liền, chiều mai hay chiều mốt các anh có rãnh không?
 
Upvote 0
Phải há, vậy anh Hải chọn địa điểm và thời gian giúp em luôn đi (sao để thuận tiện đường đi các anh). Cũng lâu rồi không gặp mọi người.
Nói làm liền, chiều mai hay chiều mốt các anh có rãnh không?
Anh Phước mở riêng 1 Topic cho vụ này để cho mọi người vào cổ vũ và hưởng ứng. Tuần này ngày nào mình cũng tham gia được hết. Có thể đi 3 ngày không cần về nhà. Mấy bài Spam thế này MOD vui lòng xóa giúp cho không loãng chủ đề.
 
Upvote 0
Sau khi làm xong, sướng quá thử test đi test lại thì phát hiện như sau:
- Rename Folder thì OK.
- Rename File:
+ Với ổ E thì Rename file cả chục lần thì những lần sau đều hiện Rename thành công 2 files
+ Với ổ USB thì Rename file
cả chục lần thì những lần sau đều hiện Rename thành công 15 files
hi hi
 
Upvote 0
Sau khi làm xong, sướng quá thử test đi test lại thì phát hiện như sau:
- Rename Folder thì OK.
- Rename File:
+ Với ổ E thì Rename file cả chục lần thì những lần sau đều hiện Rename thành công 2 files
+ Với ổ USB thì Rename file
cả chục lần thì những lần sau đều hiện Rename thành công 15 files
hi hi

Vậy anh vào code thêm 1 biến để lấy tên file nào đã được rename, sau đó kiểm tra thủ công coi là file nào
 
Upvote 0
Sau khi làm xong, sướng quá thử test đi test lại thì phát hiện như sau:
- Rename Folder thì OK.
- Rename File:
+ Với ổ E thì Rename file cả chục lần thì những lần sau đều hiện Rename thành công 2 files
+ Với ổ USB thì Rename file
cả chục lần thì những lần sau đều hiện Rename thành công 15 files
hi hi

"rào đón" các lỗi cũng vẫn không tránh được lỗi bất ngờ! Nguyên nhân là do cái thầy Phước đã nói ở bài trước nè:

Đúng là có nhiều lý do để thực hiện không thành công. Ngoài các lý do đã nêu trên thì đây cũng sẽ là 1 lý do; ví dụ trong cùng cấp Folder có 2 Folder như sau: GIAI PHAP EXCEL GIẢI PHÁP EXCEL khi Rename sẽ bị trùng tên, Pó tay chắc luôn. Tương tự với tên File cũng vậy.
Chắc chắc trong thư mục có các file thuộc loại này
Ẹc... Ẹc...
Nếu thầy Phước để ý trong code của UserForm sẽ thấy có đoạn:
Mã:
If Me.optFle Then
  fso.MoveFile strPath, strNewPath
  If fso.FileExists(strNewPath) Then n = n + 1
Else
  fso.MoveFolder strPath, strNewPath
  If fso.FolderExists(strNewPath) Then n = n + 1
End If
Sửa thành:
Mã:
If Me.optFle Then
  [COLOR=#ff0000]If Not fso.FileExists(strNewPath) Then[/COLOR]
    fso.MoveFile strPath, strNewPath
    If fso.FileExists(strNewPath) Then n = n + 1
  [COLOR=#ff0000]End If[/COLOR]
Else
  [COLOR=#ff0000]If Not fso.FolderExists(strNewPath) Then[/COLOR]
    fso.MoveFolder strPath, strNewPath
    If fso.FolderExists(strNewPath) Then n = n + 1
  [COLOR=#ff0000]End If[/COLOR]
End If
Là xong chuyện
(hoặc tôi sửa luôn trong file mới này nhé)
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Thì cũng vậy thôi: Tuân thủ quy tắt của Windows mà
---------------------------------------------------
iTôi đính kèm 2 file: RenameFileFolder.xlsmRenameFileFolder.xls (trong tập tin RenameFileFolder.RAR)để thuận tiện cho các bạn sử dụng.
Các bạn có thể lưu file thành AddIn tùy ý
----------------------------
Nói thêm
- Tôi định cải tiến thêm theo hướng: Khi tiến hành rename, không phải tất cả mọi file hoặc folder đều được rename thành công. Vậy nên tôi dự định sẽ xuất ra 1 list chứa các file (folder) đã rename thành công và 1 list khác chưa các file (folder) đã rename thật bại. Các bạn thấy sao?
- Tôi chưa hài lòng lắm về code. Mong nhận được sự góp ý của các bạn

dhn46 đã biết Code lấy tên Folder, File của thầy dựa trên câu lệnh Dos từ khá lâu và kết quả cũng rất nhanh. Tuy nhiên trong Code Rename thầy lại chọn phương án Fso, vậy vì sao thầy lại chọn phương án đó mà không sử dụng phương án Rename trên câu lệnh của Dos ạ?
 
Upvote 0
dhn46 đã biết Code lấy tên Folder, File của thầy dựa trên câu lệnh Dos từ khá lâu và kết quả cũng rất nhanh. Tuy nhiên trong Code Rename thầy lại chọn phương án Fso, vậy vì sao thầy lại chọn phương án đó mà không sử dụng phương án Rename trên câu lệnh của Dos ạ?
Có nghĩ qua chứ, nhưng...
Lý do: Nếu Rename bằng DOS, không có thêm câu lệnh nào để biết được rằng đã rename thành công ngoài việc kiểm tra lại xem cái tên mới đã được tạo hay chưa. Mà nếu làm vậy thì lại phải mất công gán kết quả vào 1 file text rồi phải mở nó lên để kiểm tra ---> Tức nếu duyệt 1000 file sẽ sinh ra 1000 file text + việc ghi và đọc, e rằng sẽ giảm tốc độ
Vậy nên tôi chọn: Lấy list bằng DOS và rename bằng FSO ---> Tôi cho rằng sử dụng công cụ thế cũng khá hợp lý
Cảm ơn bạn đã quan tâm. Mong nhận thêm những ý kiến đóng góp khác
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom