Code save file excel làm 2 bản

Liên hệ QC
Trong quá trình sử dụng nếu em nhấn ctrl+s 2 lần liên tiếp sẽ NG, số lần nhấn là số lẻ code chạy ok, số lần nhấn là số chẵn sẽ NG code( run tine error 1004) và file backup bị mất, anh kiểm tra giúp em ạ
Backup thì bạn phải dùng phương thức song song/ chạy ngầm (running in background) như bài #12 đã nhắc ấy).
Nếu để chính Excel làm nhiệm vụ backup thì mệt lắm, nhất là khi tập tin có dữ liệu lớn, và trường hợp bạn ấn lưu liên tiếp trong thời gian ngắn là xảy ra lỗi ghi đè liên tiếp.

Ở thớt kia của bạn, dùng code đó backup cũng được, hoặc code trong vba gọi lệnh shell CMD để chạy backup song song từ bên ngoài.
 
...
Ở thớt kia của bạn, dùng code đó backup cũng được, hoặc code trong vba gọi lệnh shell CMD để chạy backup song song từ bên ngoài.
Trên nguyên tắc, cái quy thức backup phải riêng biệt, không phụ thuộc (independent) vào hành động của cái chính.
Dùng một file để tự backup chính nó là trái nguyên tắc. Không bẫy lỗi là tự làm khó mình. Nếu cái server thứ hai down thì code sẽ crash.
 
Backup thì bạn phải dùng phương thức song song/ chạy ngầm (running in background) như bài #12 đã nhắc ấy).
Nếu để chính Excel làm nhiệm vụ backup thì mệt lắm, nhất là khi tập tin có dữ liệu lớn, và trường hợp bạn ấn lưu liên tiếp trong thời gian ngắn là xảy ra lỗi ghi đè liên tiếp.

Ở thớt kia của bạn, dùng code đó backup cũng được, hoặc code trong vba gọi lệnh shell CMD để chạy backup song song từ bên ngoài.
Vâng anh giúp em code vba để gọi lệnh cell cmd với ạ, vì dùng excel nên code vba sẽ tiện hơn
 
Bạn thử code này xem.
Mã:
Private Const sBackupFolder As String = "D:\Backup\"
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ThisWorkbook.SaveCopyAs sBackupFolder & ThisWorkbook.Name
End Sub
Cách 1: Mình tạo ô A1 tại sheet 1 với value là D:\Backup\ để thay cụm "D:\Backup\" trong code thành dữ liệu động Private Const sBackupFolder As String = Sheet1.Range("A1")
Cách 2: Tạo Name cho ô A1 tại sheet 1 với tên LuuFile để thay cụm Private Const sBackupFolder As String = "D:\Backup\"
thành Private Const sBackupFolder As String = "LuuFile"
Nhưng code theo 2 cách đều không tạo bản backup
Không biết giờ muốn thay thì làm như nào bạn hướng dẫn mình với
 
Cách 1: Mình tạo ô A1 tại sheet 1 với value là D:\Backup\ để thay cụm "D:\Backup\" trong code thành dữ liệu động Private Const sBackupFolder As String = Sheet1.Range("A1")
Cách 2: Tạo Name cho ô A1 tại sheet 1 với tên LuuFile để thay cụm Private Const sBackupFolder As String = "D:\Backup\"
thành Private Const sBackupFolder As String = "LuuFile"
Nhưng code theo 2 cách đều không tạo bản backup
Không biết giờ muốn thay thì làm như nào bạn hướng dẫn mình với
Const là hằng, không nhận dữ liệu động. Muốn làm như bạn thì phải cho nó thành biến:
Dim sBackupFolder as String
Rồi gán giá trị cho nó;
sBackupFolder = Sheet1.Range("A1")
 
Em chào mọi người
Em cần lưu file excel làm 2 bản, mỗi lần nhấn ctrl + S ( lưu file ) sẽ tạo thành 2 bản excel lưu trên 2 ổ( thư mục khác nhau) đề phòng trường hợp 1 file gặp vấn đề như bị xóa, lỗi...thì còn 1 file backup sẵn.
Nhờ các anh chị giúp đỡ ạ
Em xin cảm ơn.
Sub saoluufile()

Dim t, v, v1, nowtime

t = MsgBox("Ban muon sao luu?", vbOKCancel)
If t = vbCancel Then Exit Sub

On Error GoTo thoat:
Application.ScreenUpdating = False

nowtime = Format(Now, "YY-MM-DD-HH-MM-SS")
v = ThisWorkbook.FullName
v1 = ThisWorkbook.Name


ChDir ThisWorkbook.Path
ActiveWorkbook.SaveAs Filename:=(ThisWorkbook.Path) & "\" & (nowtime) & "-" & (v1)
Kill v

ActiveWorkbook.SaveAs v
MsgBox "Da luu 1 ban"
thoat:
Application.ScreenUpdating = True

End Sub


Ban thử code này xem , mình cũng góp nhặt code
 
Thời này mà không tận dụng được đám mây kèm tiện ích đồng bộ PC-Cloud thì phí thật. Lẽ ra việc của bạn đơn giản và an toàn hơn rất nhiều nếu dùng Google Drive chẳng hạn.

Nếu dùng PC-Cloud, thì Maika8008 đang dùng phần mềm nào vậy.
Hiện thì em đang dùng GoodSync
 
Web KT
Back
Top Bottom