Tạo file backup sang thư mục khác (1 người xem)

Liên hệ QC

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

Thanh1102

Thành viên hoạt động
Tham gia
29/11/08
Bài viết
147
Được thích
46
Em có một vài file Excel đang để tại thư mục A (thư mục làm việc hàng ngày). Nhằm tránh bị xoá mất file. Nên em muốn tạo file backup và được lưu trữ tại một thư mục khác ngoài thư mục làm việc hàng ngày nhưng không muốn làm xong lại phải copy sang. (Đã tạo file backup (.xlk) nhưng file backup lại nằm trong thư mực làm việc hàng ngày). Các bác xem giúp em vấn đề này nhé. Chân thành cảm ơn.
 
Bạn copy code này vào file bạn cần lưu nha. Chú ý tạo thư mục cần lưu là Backup cùng thư mục với file.
Sub Saveasfile()
Dim Msg, style, title, TB, a
Dim Filenames, Fath As String
On Error Resume Next

Application.ScreenUpdating = False
Fath = ThisWorkbook.Path
Filenames = ActiveWorkbook.Name & "_" & Format(Date, "dd-mm-yy") & ".xls"

Msg = "Luu du lieu : " & Filenames & " Ban muon luu file nay ? "
style = vbYesNo + vbInformation
title = "THONG BAO ! "
TB = MsgBox(Msg, style, title)
If TB = vbYes Then
ActiveWorkbook.Copy
ActiveWorkbook.SaveAs Filename:=Fath & "\Backup\" & Filenames
'ActiveWorkbook.Close savechanges:=False
Else: Exit Sub
End If
End Sub
 
Em có một vài file Excel đang để tại thư mục A (thư mục làm việc hàng ngày). Nhằm tránh bị xoá mất file. Nên em muốn tạo file backup và được lưu trữ tại một thư mục khác ngoài thư mục làm việc hàng ngày nhưng không muốn làm xong lại phải copy sang. (Đã tạo file backup (.xlk) nhưng file backup lại nằm trong thư mực làm việc hàng ngày). Các bác xem giúp em vấn đề này nhé. Chân thành cảm ơn.

Bạn cũng có thể tham khảo thêm tại đây
 
Em có nhiều file muốn backup 1 sheet của các file đó sang duy nhất 1 file (định dạng sheet của các file là như nhau). Vậy thì làm như thế nào? Xin các bác chỉ giúp
 
Bạn cũng có thể tham khảo thêm tại đây
Cảm ơn bạn. Mình muốn sao lưu sang thư mục khác thư mục có file sử dụng.
Hoặc là file backup được tạo từ chức năng tạo backup của Excel, khi save as chọn General Option nhưng không nằm cùng thư mục có file sử dụng.
File sử dụng - nằm ở thư mục A
file backup (.xlk)- nằm ở thư mục B
Các bạn xem giúp mình nhé.
 
Mình giới thiệu cho bạn hàm: MkDir

Bạn có thể tùy biến trong các ví dụ trên để tạo đường dẫn đến nơi bạn muốn lưu file Backup

Tên hàm:
MkDir
Mô tả:
MkDir path
Tạo thư mục
Tham số:
path
Đường dẫn nơi muốn tạo thư mục
Ví dụ:
Option Explicit
Private Sub Form_Load()
MkDir "D:\My Folder"
End Sub
 
Theo tôi, bạn tạo marco, có đoạn mã đại ý như sau:
FileCopy "C:\BaoCao\t409.xls", "E:\BackupBaoCao\t409.xls" rồi gán macro này vào một nút lệnh tự tạo, trước khi thoát bấm vào nút đó một phát là OK.
 
Cảm ơn bạn. Mình muốn sao lưu sang thư mục khác thư mục có file sử dụng.
Hoặc là file backup được tạo từ chức năng tạo backup của Excel, khi save as chọn General Option nhưng không nằm cùng thư mục có file sử dụng.
File sử dụng - nằm ở thư mục A
file backup (.xlk)- nằm ở thư mục B
Các bạn xem giúp mình nhé.

Mình đã gửi đoạn code trên nó đã lưu vào thư mục khác rồi đó còn gì. Nếu muôn lưu vào đâu nữa thì bạn sửa lại đường dẫn.
 
Xin lỗi chắc mình nhầm thư mục lập trình cho excel
 
Bạn copy code này vào file bạn cần lưu nha. Chú ý tạo thư mục cần lưu là Backup cùng thư mục với file.

Bạn ơi mình có 4 file excell trong cùng thư mục, mình muốn hằng ngày cứ đến 8h tối là 4 file này tự động lưu vào thư mục "Du lieu Backup" của ổ E nằm ở một máy tính khác có kết nối mạng nội bộ với nhau. Nhờ bạn giúp mình nhé.
 
Bạn ơi mình có 4 file excell trong cùng thư mục, mình muốn hằng ngày cứ đến 8h tối là 4 file này tự động lưu vào thư mục "Du lieu Backup" của ổ E nằm ở một máy tính khác có kết nối mạng nội bộ với nhau. Nhờ bạn giúp mình nhé.
Để làm điều này không khó, nhưng lúc 8h tối 2 máy tính này phải đang mở và cái file điều khiển chứa code phải đang mở. Bạn có đủ các điều kiện này không?
 
Để làm điều này không khó, nhưng lúc 8h tối 2 máy tính này phải đang mở và cái file điều khiển chứa code phải đang mở. Bạn có đủ các điều kiện này không?


2 máy của mình mở liên tục đến 9h tối còn 4 file ngày nào củng mở để nhập dữ liệu nhưng có khi mở liên tục có khi chỉ mở một lúc thôi
 
2 máy của mình mở liên tục đến 9h tối còn 4 file ngày nào củng mở để nhập dữ liệu nhưng có khi mở liên tục có khi chỉ mở một lúc thôi
Bạn thử code này xem sao. Sửa lại tên đường dẫn theo thực tế.
Mình cũng không dám chắc là code chạy được.
Code sẽ copy các file Excel từ thư mục F:\DATA sang E:\BACKUP và ghi đè lên những file cũ
Lưu ý là file này phải đang được mở vào thời điểm ấn định
PHP:
Sub File_Copy()
Application.ScreenUpdating = False
   With CreateObject("Scripting.FileSystemObject")
      .CopyFile "F:\DATA\*.xl*", "E:\BACKUP\", True
   End With
Application.ScreenUpdating = True
End Sub
Bạn sửa số 20 thành 1 số khác để hẹn giờ chạy code
PHP:
Sub hengio()
Application.OnTime TimeValue("20:00:00"), "File_Copy"
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Bạn thử code này xem sao. Sửa lại tên đường dẫn theo thực tế.
Mình cũng không dám chắc là code chạy được.
Code sẽ copy các file Excel từ thư mục F:\DATA sang E:\BACKUP và ghi đè lên những file cũ
Lưu ý là file này phải đang được mở vào thời điểm ấn định
PHP:
Sub File_Copy()
Application.ScreenUpdating = False
   With CreateObject("Scripting.FileSystemObject")
      .CopyFile "F:\DATA\*.xl*", "E:\BACKUP\", True
   End With
Application.ScreenUpdating = True
End Sub
Bạn sửa số 20 thành 1 số khác để hẹn giờ chạy code
PHP:
Sub hengio()
Application.OnTime TimeValue("20:00:00"), "File_Copy"
End Sub


Mình save file "Tu dong hen gio copy file" vào thư mục DATA ở ổ D và ở ổ E tạo thư mục BACKUP, xong mở file sửa code thành
.CopyFile "D:\DATA\*.xl*", "E:\BACKUP\", True
và Application.OnTime TimeValue("15:04:00"), "File_Copy" rồi để đấy chờ đến 15h 5ph mở thư mục BACKUP ở ổ E vẫn trống không, như vậy mình làm sai ở đâu không bạn ?
 
Mình save file "Tu dong hen gio copy file" vào thư mục DATA ở ổ D và ở ổ E tạo thư mục BACKUP, xong mở file sửa code thành
.CopyFile "D:\DATA\*.xl*", "E:\BACKUP\", True
và Application.OnTime TimeValue("15:04:00"), "File_Copy" rồi để đấy chờ đến 15h 5ph mở thư mục BACKUP ở ổ E vẫn trống không, như vậy mình làm sai ở đâu không bạn ?
Lưu file vào đó rồi để file ở đó mà không mở file lên thì đợi đến tết Công Gô nhé. Mình đã nói là file này phải ĐANG ĐƯỢC MỞ
 
Lưu file vào đó rồi để file ở đó mà không mở file lên thì đợi đến tết Công Gô nhé. Mình đã nói là file này phải ĐANG ĐƯỢC MỞ
Vâng chính xác là mình vẫn mở file "Tu dong hen gio copy file" liên tục đấy bạn nhưng nó vẫn không tự động copy vào E:\BACKUP
 
Lần chỉnh sửa cuối:
Ổ đĩa E:\BACKUP là ổ trên máy của mình, mình chưa thử copy tự động qua máy khác.

Có thành viên nào test hộ cái file mình làm phía trên giúp bạn lee chung nhé. Chắc chắn bạn đã làm gì sai đấy. Cái file mình gởi lên bên trong có 1 sự kiện Workbook Open nữa đấy nhé. Khi mở file sẽ tư động chạy Sub hengio. Khi đến thời điểm ấn định sẽ gọi tiếp thủ tục File_Copy
 
Có thành viên nào test hộ cái file mình làm phía trên giúp bạn lee chung nhé. Chắc chắn bạn đã làm gì sai đấy. Cái file mình gởi lên bên trong có 1 sự kiện Workbook Open nữa đấy nhé. Khi mở file sẽ tư động chạy Sub hengio. Khi đến thời điểm ấn định sẽ gọi tiếp thủ tục File_Copy

File này em vừa test xong, nó vẫn chạy bình thường mà.

@Bạn leechung,

Bạn download file của anh quanghai1969 về và chỉ sửa đường dẫn thôi thì chắc vẫn chạy bình thường.
Nhưng nếu bạn chỉ copy 2 sub và dán vào Module thôi thì không chạy vì còn thiếu 1 sub sự kiện đối với workbook để kích hoạt sub hengio

Mã:
Private Sub Workbook_Open()
hengio
End Sub

Còn 1 điều nữa là bạn đã cho phép Macro hoạt động chưa ?
 
Lần chỉnh sửa cuối:
Cám ơn 2 bạn nhắc nhở mình đã thử lại nhiều lần trên file của bạn quanghai1969 như sau(file vẫn luôn mở nhé và đã chọn enable macros): đổi giờ sớm hơn giờ hiện hành trên máy 5ph xong bấm save thoát cửa sổ visual basic xong bấm save file tiếp tục bấm menu/macro/macro hengio bấm nút RUN chờ sau 5ph kiểm tra E:\BACKUP đúng là file đã được copy vào, nhưng nếu chỉ đổi giờ mà không RUN macro hengio thì chờ bao lâu cũng chẳng copy gì cã. Còn bạn mhung12005 nói nếu bạn chỉ copy 2 sub và dán vào Module thôi thì không chạy vì còn thiếu 1 sub sự kiện đối với workbook để kích hoạt sub hengio mình không hiểu phải làm gì trong trường hợp này kiến thức mình còn nông cạn lắm. Vậy các bạn xem giúp để nó thật sự tự động copy nhé.
 
Tên hàm:
MkDir
Mô tả:
MkDir path
Tạo thư mục
Tham số:
path
Đường dẫn nơi muốn tạo thư mục
Ví dụ:
Option Explicit
Private Sub Form_Load()
MkDir "D:\My Folder"
End Sub
Cái này sẽ giúp bạn bảo vđược nội dung cá nhân hiệu qu

Bạn ơi code của bạn mình không biết áp dụng như thế nào và dùng như thế nào để đạt được yêu cầu này: mình có 4 file excell trong cùng thư mục, mình muốn hằng ngày cứ đến 8h tối là 4 file này tự động lưu vào thư mục "Du lieu Backup" của ổ E nằm ở một máy tính khác có kết nối mạng nội bộ với nhau.
 
Lần chỉnh sửa cuối:
Cám ơn 2 bạn nhắc nhở mình đã thử lại nhiều lần trên file của bạn quanghai1969 như sau(file vẫn luôn mở nhé và đã chọn enable macros): đổi giờ sớm hơn giờ hiện hành trên máy 5ph xong bấm save thoát cửa sổ visual basic xong bấm save file tiếp tục bấm menu/macro/macro hengio bấm nút RUN chờ sau 5ph kiểm tra E:\BACKUP đúng là file đã được copy vào, nhưng nếu chỉ đổi giờ mà không RUN macro hengio thì chờ bao lâu cũng chẳng copy gì cã. Còn bạn mhung12005 nói nếu bạn chỉ copy 2 sub và dán vào Module thôi thì không chạy vì còn thiếu 1 sub sự kiện đối với workbook để kích hoạt sub hengio mình không hiểu phải làm gì trong trường hợp này kiến thức mình còn nông cạn lắm. Vậy các bạn xem giúp để nó thật sự tự động copy nhé.
Mở cái file của mình gởi, vào cửa sổ code, bấm chuột vào đối tượng ThisWorkbook sẽ hiểu.
 
Mở cái file của mình gởi, vào cửa sổ code, bấm chuột vào đối tượng ThisWorkbook sẽ hiểu.

Cám ơn bạn đã mở rộng tầm nhìn cho mình, sau khi xem code mình đã nhận thấy đúng là file của bạn không có gì sai cả mà lổi ở chổ dùng không đúng cách. khi file được mở lập tức kích hoạt sub hengio và nó nhớ cái giờ có sẵn trong code, vì vậy khi mình đổi giờ trong code, dù đã lưu lại đi nữa thì máy vẫn nhớ giờ hẹn lúc đầu và đương nhiên là không thể nào copy theo giờ hẹn mới được, để khắc phục: sau khi đổi giờ, lưu file code để code cập nhật giờ hẹn mới và đặc biệt là phải thoát hẵn file luôn rồi mới mở file trở lại để sub hengio kích hoạt cập nhật giờ mình mới thay đổi, chắc chắn 100% là sẻ copy đúng theo giờ sửa đổi của mình. Vì kiến thức mình kém cỏi đã làm phiền các bạn cho mình xin lổi các bạn nhé.
 
Bạn thử code này xem sao. Sửa lại tên đường dẫn theo thực tế.
Mình cũng không dám chắc là code chạy được.
Code sẽ copy các file Excel từ thư mục F:\DATA sang E:\BACKUP và ghi đè lên những file cũ
Lưu ý là file này phải đang được mở vào thời điểm ấn định
PHP:
Sub File_Copy()
Application.ScreenUpdating = False
   With CreateObject("Scripting.FileSystemObject")
      .CopyFile "F:\DATA\*.xl*", "E:\BACKUP\", True
   End With
Application.ScreenUpdating = True
End Sub
Bạn sửa số 20 thành 1 số khác để hẹn giờ chạy code
PHP:
Sub hengio()
Application.OnTime TimeValue("20:00:00"), "File_Copy"
End Sub

Bạn quanghai1969 mến, mình đã tạo đường dẫn copy tự động sang máy khác được rồi nhờ bạn đổi code để file tự động copy cứ mổi giờ một lần nhé, vì window hoặc ổ cứng máy này có vấn đề rồi có thể hư đột xuất xin cám ơn bạn trước nhe.
 
Bạn quanghai1969 mến, mình đã tạo đường dẫn copy tự động sang máy khác được rồi nhờ bạn đổi code để file tự động copy cứ mổi giờ một lần nhé, vì window hoặc ổ cứng máy này có vấn đề rồi có thể hư đột xuất xin cám ơn bạn trước nhe.

Cũng sử dụng file trên, nhưng sửa lại 1 chút như thế này
PHP:
Sub File_Copy()
Application.ScreenUpdating = False
   With CreateObject("Scripting.FileSystemObject")
      .CopyFile "F:\DATA\*.xl*", "E:\BACKUP\", True
   End With
   hengio
Application.ScreenUpdating = True
End Sub

PHP:
Sub hengio()
Application.OnTime Now + TimeValue("00:59:59"), "File_Copy"
End Sub
 
Bạn thử code này xem sao. Sửa lại tên đường dẫn theo thực tế.
Mình cũng không dám chắc là code chạy được.
Code sẽ copy các file Excel từ thư mục F:\DATA sang E:\BACKUP và ghi đè lên những file cũ
Lưu ý là file này phải đang được mở vào thời điểm ấn định
PHP:
Sub File_Copy()
Application.ScreenUpdating = False
   With CreateObject("Scripting.FileSystemObject")
      .CopyFile "F:\DATA\*.xl*", "E:\BACKUP\", True
   End With
Application.ScreenUpdating = True
End Sub
Bạn sửa số 20 thành 1 số khác để hẹn giờ chạy code
PHP:
Sub hengio()
Application.OnTime TimeValue("20:00:00"), "File_Copy"
End Sub
Cho mình hỏi có cách nào không mỡ file mà đến giờ ấn định vẫn lưu tự động được không (file được lưu trên server, cùng thư mục, máy vẫn chạy 24/24), Như vậy đến ngày hôm sau mình vào sẻ thấy file mới và được đổi tên lại. (thay đổi ngày)
VD: file ngày hôm trước: Z:\thong bao 25-01-2013
ngày hôm sau vào vẫn trên ỗ Z có thêm: Z:\thong bao 26-01-2013

Trân trọng cảm ơn
 
Cho mình hỏi có cách nào không mỡ file mà đến giờ ấn định vẫn lưu tự động được không (file được lưu trên server, cùng thư mục, máy vẫn chạy 24/24), Như vậy đến ngày hôm sau mình vào sẻ thấy file mới và được đổi tên lại. (thay đổi ngày)
VD: file ngày hôm trước: Z:\thong bao 25-01-2013
ngày hôm sau vào vẫn trên ỗ Z có thêm: Z:\thong bao 26-01-2013
Trân trọng cảm ơn

Câu trả lời cuối cùng là nếu file không đang mở thì code không chạy được
 
Bạn thử code này xem sao. Sửa lại tên đường dẫn theo thực tế.
Mình cũng không dám chắc là code chạy được.
Code sẽ copy các file Excel từ thư mục F:\DATA sang E:\BACKUP và ghi đè lên những file cũ
Lưu ý là file này phải đang được mở vào thời điểm ấn định
PHP:
Sub File_Copy()
Application.ScreenUpdating = False
   With CreateObject("Scripting.FileSystemObject")
      .CopyFile "F:\DATA\*.xl*", "E:\BACKUP\", True
   End With
Application.ScreenUpdating = True
End Sub
Bạn sửa số 20 thành 1 số khác để hẹn giờ chạy code
PHP:
Sub hengio()
Application.OnTime TimeValue("20:00:00"), "File_Copy"
End Sub

Nhờ Anh QuangHai và mọi người thêm vào Code trên để khi sao lưu sẽ không ghi đè lên file cũ mà sao chép vào với tên mới
Vd tên cũ là Baocao thì File sao chép lần 1 là Baocao1, lần 2 Baocao2, lần 3 Baocao3
 
Máy tính của mình bị nhiễm con vi rút ẩn thư mục, khi tao một thư mục mới , copy file vào đó nó lại tự động dồn các thư mục này vào ổ đĩa C hoặc D. Mình đã dùng AVG 2012 free edition update hiện tại để diệt mà không được, các Anh/Chị nào phần mềm nào hay giúp mình khắc phục con này với ?
 
trên này toàn nhiều cao thủ không ai giúp được vấn đề này à ?
 
Máy tính của mình bị nhiễm con vi rút ẩn thư mục, khi tao một thư mục mới , copy file vào đó nó lại tự động dồn các thư mục này vào ổ đĩa C hoặc D. Mình đã dùng AVG 2012 free edition update hiện tại để diệt mà không được, các Anh/Chị nào phần mềm nào hay giúp mình khắc phục con này với ?
Bạn tham khảo ở đây
http://forum.bkav.com.vn/showthread.php?17947-Virus-lam-an-folder
http://4vn.eu/forum/showthread.php?t=67634
http://www.ddth.com/showthread.php/125630-Virus-l%C3%A0m-%E1%BA%A9n-folder-v%C3%A0-t%E1%BA%A1o-file-autorun-inf
 
Sub File_Copy()
Application.ScreenUpdating = False
With CreateObject("Scripting.FileSystemObject")
.CopyFile "F:\DATA\*.xl*", "E:\BACKUP\", True
End With
hengio
Application.ScreenUpdating = True
End Sub



Sub hengio()
Application.OnTime Now + TimeValue("00:59:59"), "File_Copy"
End Sub

chủ đề này hơi cũ nhưng mới với em, xin làm phiền a quanghai chút ạ, cái chỗ code em bôi đỏ có phải là tên workbook mà mình muốn backup ko ạ...! và em test thử code thấy 1 vấn đề nho nhỏ tnay ạ. nếu 2 thư mục cùng 1 máy tính thì run code ngon, nhưng code ko chạy đc vs 2 thư mục # máy tính...
 

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

Back
Top Bottom