Bác nào giúp em coppy file hoặc folder tới nhiều folder khác nhau với

Liên hệ QC

vonguyen3745

Thành viên hoạt động
Tham gia
18/7/09
Bài viết
145
Được thích
5
Em muốn coppy 1 file hoặc folder tới nhiều folder khác nhau theo đường dẫn cho trước. Thanks
 

File đính kèm

  • Copy file hoac folder toi nhieu folder khac nhau.xlsm
    12.6 KB · Đọc: 16
Bạn có thể dùng cmd "move" như sau: move "thumuccancopy" "thumucdich"
Dùng công thức excel tạo các câu lệnh, copy các câu lệnh vào notepad lưu dưới đuôi .bat rồi chạy file đó là được.
 
Upvote 0
Mình thấy trên diễn đàn có code của bác nào đó cho copy nhiều file, folder vào 1 folder, nhưng mình không biết sưả ngược lại, bác nào biết sửa giúp mình với.
Mã:
Sub CopyFolderAPI()
Dim lastRow As Long, r As Long, sourceDir As String, destDir As String
On Error Resume Next
    lastRow = Range("C1000").End(xlUp).Row
    destDir = Range("D1").Value
    For r = 2 To lastRow
        sourceDir = Range("C" & r).Value
        CopyFolder sourceDir, destDir
    Next
End Sub
 
Upvote 0
Bạn có thể dùng cmd "move" như sau: move "thumuccancopy" "thumucdich"
Dùng công thức excel tạo các câu lệnh, copy các câu lệnh vào notepad lưu dưới đuôi .bat rồi chạy file đó là được.
Hay quá, bạn hướng dẫn cụ thể cho mọi người đi.
Cảm ơn bạn.
 
Upvote 0
Hay quá, bạn hướng dẫn cụ thể cho mọi người đi.
Cảm ơn bạn.
có gì đâu, bạn dùng công thức ra kết quả như trong file, rồi copy kết quả đó vào notepad, lưu dưới dạng .bat. rồi click đúp để chạy file bat đó. Mình không đính kèm file bat được.
1625990284344.png
Bài đã được tự động gộp:

Mình thấy trên diễn đàn có code của bác nào đó cho copy nhiều file, folder vào 1 folder, nhưng mình không biết sưả ngược lại, bác nào biết sửa giúp mình với.
Mã:
Sub CopyFolderAPI()
Dim lastRow As Long, r As Long, sourceDir As String, destDir As String
On Error Resume Next
    lastRow = Range("C1000").End(xlUp).Row
    destDir = Range("D1").Value
    For r = 2 To lastRow
        sourceDir = Range("C" & r).Value
        CopyFolder sourceDir, destDir
    Next
End Sub
Bạn thiếu sub "CopyFolder "
 

File đính kèm

  • Copy file hoac folder toi nhieu folder khac nhau.xlsm
    11.9 KB · Đọc: 9
Upvote 0
Upvote 0
Mình tạo file bat như bạn hướng dẫn nhưng không được
 
Upvote 0
Mình thấy trên diễn đàn có code của bác nào đó cho copy nhiều file, folder vào 1 folder, nhưng mình không biết sưả ngược lại, bác nào biết sửa giúp mình với.
Mã:
Sub CopyFolderAPI()
Dim lastRow As Long, r As Long, sourceDir As String, destDir As String
On Error Resume Next
    lastRow = Range("C1000").End(xlUp).Row
    destDir = Range("D1").Value
    For r = 2 To lastRow
        sourceDir = Range("C" & r).Value
        CopyFolder sourceDir, destDir
    Next
End Sub
Đấy là code của tôi (siwtom) trong bài #9 (có tập tin). Đọc thêm bài #13, #17 và #20 để hiểu thêm.


Sub CopyFolderAPI sử dụng sub CopyFolder trong module modCopyMoveDeleteFolder. Khi muốn dùng code của tôi trong tập tin của mình thì phải đính kèm module modCopyMoveDeleteFolder lấy từ bài #9.

Trong tập tin bạn gửi tôi đã làm hộ bạn - viết code và thêm module modCopyMoveDeleteFolder.
 

File đính kèm

  • Copy file hoac folder toi nhieu folder khac nhau.xlsm
    23.6 KB · Đọc: 30
Lần chỉnh sửa cuối:
Upvote 0
Mình tạo file bat như bạn hướng dẫn nhưng không được
Trong module modCopyMoveDeleteFolder đã có sẵn code dùng DÒNG LỆNH rồi. Nếu bạn muốn dùng dòng lệnh thì lôi ra dùng thôi - bạn sử dụng sub Xcopy thay cho sub CopyFolder. Bạn không phải tự tạo BAT vì rất rách việc (công thức + copy/paste, lưu tập tin bằng tay). Khi thư mục nguồn và đích thay đổi lại phải chỉnh sửa tập tin BAT. Code tự tạo dòng lệnh và chạy dòng lệnh đó - dòng lệnh xcopy.

Sửa code dùng CopyFolder thành
Mã:
Sub CopyFolderAPI()
Dim lastRow As Long, r As Long, sourceDir As String, destDir As String
On Error Resume Next
    lastRow = Sheet1.Cells(Rows.count, "B").End(xlUp).Row
    If lastRow < 2 Then Exit Sub
    sourceDir = Sheet1.Range("A2").Value
    Range("C2:C1000").ClearContents
    For r = 2 To lastRow
        destDir = Range("B" & r).Value
        Xcopy sourceDir, destDir, "*.*"
        Range("C" & r).Value = "Done"
    Next
End Sub
 
Upvote 0
Web KT
Back
Top Bottom