Giúp đỡ code rename và copy file hàng loạt

Liên hệ QC

babyheomoi

Thành viên thường trực
Tham gia
22/9/13
Bài viết
396
Được thích
91
Hi, mọi người, em đang có vấn đề cần giúp đỡ. Đó là sắp sếp, copy file vào các thư mục lưu chung của dự án - phần việc này là do người cũ để lại, tồn đọng quá nhiều nên rất nhiều file cần đưa về đúng thư mục lưu trữ.
Em có gửi file đính kèm. Nhu cầu của em là: từ tên file của cột A (thư mục lưu thông thường là Documents) => em muốn rename thành tên file mới ở cột E và copy nó vào folder ở cột F. trường hợp Folder cột F trùng file thì rename nó thêm số 1 2 3 đuôi.
Em cám ơn ạ!
 

File đính kèm

  • HELP_MOVE AND COPY_GPE.xlsx
    9.1 KB · Đọc: 23
Hi, mọi người, em đang có vấn đề cần giúp đỡ. Đó là sắp sếp, copy file vào các thư mục lưu chung của dự án - phần việc này là do người cũ để lại, tồn đọng quá nhiều nên rất nhiều file cần đưa về đúng thư mục lưu trữ.
Em có gửi file đính kèm. Nhu cầu của em là: từ tên file của cột A (thư mục lưu thông thường là Documents) => em muốn rename thành tên file mới ở cột E và copy nó vào folder ở cột F. trường hợp Folder cột F trùng file thì rename nó thêm số 1 2 3 đuôi.
Em cám ơn ạ!
Kiểm tra lại . . .
Mã:
Sub CopyFile()
  Dim aOld(), aNew(), S, FSo As Object
  Dim i&, n&, k&, sPath$, dPath$, bName$, eName$

  Set FSo = CreateObject("Scripting.FileSystemObject")
  With Sheets("Sheet1")
    aOld = .Range("A5", .Range("B10000").End(xlUp)).Value
    aNew = .Range("E5", .Range("F10000").End(xlUp)).Value
  End With
  'On Error Resume Next
  For i = 1 To UBound(aNew)
    If FSo.FolderExists(aNew(i, 2)) = False Then FSo.CreateFolder (aNew(i, 2))
    sPath = aOld(i, 2) & "\" & aOld(i, 1)
    If FSo.FileExists(sPath) = True Then
      dPath = aNew(i, 2) & "\" & aNew(i, 1)
      If FSo.FileExists(dPath) = True Then
        S = Split(aNew(i, 1), ".")
        eName = "." & S(UBound(S))
        bName = Replace(aNew(i, 1), eName, "")
        n = 0
        Do
          n = n + 1
          dPath = aNew(i, 2) & "\" & bName & "_" & n & eName
          If FSo.FileExists(dPath) = False Then Exit Do
        Loop
      End If
      FSo.CopyFile sPath, dPath, False
      k = k + 1
    End If
  Next i
  MsgBox "Da Copy " & k & " File!"
End Sub
 
Upvote 0
Quy trình của thớt không phải là quy trình chuẩn của rename files.
1. khi copy files abc.xlsx thì có thể bên folder đích đã có files abc1.xlsx, abc2.xlsx rồi. Theo quy trình của thớt thì cứ copy file abc.xlsx, theo quy trình chuẩn thì file mới phải lấy tên là abc3.xlsx
2. copy xong thì phải ghi lại là file đã đổi tên theo số 1, 2, hay 3 gì đó. Nếu không thì sau này lấy gì kiểm chứng.

Chú: tôi chỉ nói cho những bạn có nhu cầu copy files hiểu quy trình chuẩn thôi. Chính chủ thớt thì đương nhiên có hằng trăm lý do, tôi không buồn tranh luận.
 
Upvote 0
Quy trình của thớt không phải là quy trình chuẩn của rename files.
1. khi copy files abc.xlsx thì có thể bên folder đích đã có files abc1.xlsx, abc2.xlsx rồi. Theo quy trình của thớt thì cứ copy file abc.xlsx, theo quy trình chuẩn thì file mới phải lấy tên là abc3.xlsx
2. copy xong thì phải ghi lại là file đã đổi tên theo số 1, 2, hay 3 gì đó. Nếu không thì sau này lấy gì kiểm chứng.

Chú: tôi chỉ nói cho những bạn có nhu cầu copy files hiểu quy trình chuẩn thôi. Chính chủ thớt thì đương nhiên có hằng trăm lý do, tôi không buồn tranh luận.
Lúc đầu có ghi lại file copy, nghỉ lại thấy thớt không quan tâm nên bỏ qua
 
Upvote 0
Web KT
Back
Top Bottom