Code save file excel làm 2 bản (1 người xem)

Liên hệ QC

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

Datcdt2k9

Thành viên hoạt động
Tham gia
27/12/19
Bài viết
109
Được thích
11
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.
 
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.
Vậy khi đang nhập liệu bạn ctrl+ S thì cũng tạo luôn 2 file mới sao?
 
Cái vụ ao tu bách úp lần trước của bạn chưa giải quyết được à?
 
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.
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.
 
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.
- Đầy phần mềm tự động sao lưu mà, cần gì phải làm kiểu này cho mệt.
- Dùng google drive như bác trên nói cũng ổn.
 
Cái vụ ao tu bách úp lần trước của bạn chưa giải quyết được à?em vẫn chưa

Cái vụ ao tu bách úp lần trước của bạn chưa giải quyết được à?
Em vẫn chưa giải quyết được anh ạ, em tìm hiểu robocopy mà áp dụng vào test lấy file trên server về máy mà toàn báo lỗi
Bài đã được tự động gộp:

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.
Em không được cài phần mềm hay app gì anh ạ nên lên diễn đàn nhờ anh chị giúp code save file excel làm 2 bản, không may bị mất file còn có file ứng cứu
Bài đã được tự động gộp:

- Đầy phần mềm tự động sao lưu mà, cần gì phải làm kiểu này cho mệt.
- Dùng google drive như bác trên nói cũng ổn.
Em không được cài thêm app hay phần mềm gì anh ạ
Bài đã được tự động gộp:

Vậy khi đang nhập liệu bạn ctrl+ S thì cũng tạo luôn 2 file mới sao?
Vâng a, cứ ctrl +s là excel được lưu làm 2 file, nhưng dạng update chứ không phải cứ nhấn save là tạo ra 2 bản tại các thời điểm khác nhau anh ạ
 
Vâng a, cứ ctrl +s là excel được lưu làm 2 file, nhưng dạng update chứ không phải cứ nhấn save là tạo ra 2 bản tại các thời điểm khác nhau anh ạ
Vậy làm sao máy nhận ra được là đoạn dữ liệu mới gõ vào với dữ liệu cũ cách đây 1 tiếng hay 2 tiếng rồi chọn ra để cập nhật bạn nhỉ.
 
Cái này xuất phát từ nhu cầu thực tế của bạn, mình cũng chưa nghĩ ra nhưng ý tưởng trên thì chắc không phù hợp.
Nhu cầu chính của thớt là backup dữ liệu để đề phòng mất điện.
Những cái thớt nghĩ ra là nhu cầu của các cơ quan thứ dữ, cần dạng backup song song. Ví dụ một database server ngỏm thì lập tức server thứ hai nhảy vào thay thế, database in hệt như vậy.

Muốn hai bản thì cứ tạo một cai phần mềm ở sau lưng (running in background). Phần mềm xét hễ có file mới saved thì copy vào archive.
 
Vậy làm sao máy nhận ra được là đoạn dữ liệu mới gõ vào với dữ liệu cũ cách đây 1 tiếng hay 2 tiếng rồi chọn ra để cập nhật bạn nhỉ.
Tôi nghĩ cứ lưu đè file sao lưu không cần hỏi, bất kể dữ liệu mới sai đúng thế nào thì được chứ?
 
Ý em muốn cũng là như vậy,bản backup thì sẽ ghi đè, vì chỉ cần lấy dữ liệu lần ctrl +s cuối cùng
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
 
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
Em chép code này vào vba test thì lúc run không hiện tên sub để run anh ạ
 
Chép vào ThisWorkbook. Và không cần ấn chạy Sub, chỉ cần ấn lưu file là được.

View attachment 253324
Em làm được rồi, cảm ơn các anh đã giúp em
Bài đã được tự động gộp:

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
Em test ok rồi ạ, em cảm ơn anh
 
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
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 ạ
 
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
 

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

Back
Top Bottom