Thủ tục sao lưu file hiện hành ra 1 file mới (Backup file) trong cùng 1 thư mục

Liên hệ QC

hoangdanh282vn

Nguyễn Cảnh Hoàng Danh
Thành viên danh dự
Tham gia
21/12/07
Bài viết
1,902
Được thích
5,303
Nghề nghiệp
Kinh doanh các mặt hàng văn phòng phẩm
Mình gửi các bạn Sub tạo file sao lưu trong cùng một thư mục
PHP:
Sub BackupFile()
Application.ScreenUpdating = False
On Error Resume Next
Path_OldFile = ActiveWorkbook.FullName
Path = Left(Path_OldFile, InStrRev(Path_OldFile, "\", , 1) - 1)
Name_NewFile = Replace(Replace(Path_OldFile, Path & "\", ""), ".xls", "")
Name_NewFile = Name_NewFile & "-Backup-" & Format(Now, "dd-mm-yyyy  hh-mm-ss") & ".xls"
ActiveWorkbook.Save
ActiveWorkbook.SaveAs Filename:=Path & "\" & Name_NewFile
Workbooks.Open Filename:=Path_OldFile
Workbooks(Name_NewFile).Close
Application.ScreenUpdating = True
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Thanks cac bac nhìu nha. Em đang cần cái này. Nhân đây cho em hoi đã bác nào viết code sao lưu bằng cách tạo form lựa chọn sao lưu sheet mình cần chưa ạ
 
Upvote 0



Với .SaveCopyAs thì code ngắn đi đáng kể. Kết hợp với việc Bác đảo lại tên file sao lưu thì lại ngắn hơn nữa, vì không cần phải replace thêm một lần nữa.

Cái này : .Save có lẽ cũng không cần vì nhiều khi người sử dụng không muốn lưu file thì sao.



Thanks các bác nhìu nha. Nhân đây cho em hỏi đã bác nào viết code sao lưu cho sheet mình cần chưa ạ, bằng cách tạo form có lựa chọn sheet cần sao lưu ấy ạ
 
Upvote 0
Thanks các bác nhìu nha. Nhân đây cho em hỏi đã bác nào viết code sao lưu cho sheet mình cần chưa ạ, bằng cách tạo form có lựa chọn sheet cần sao lưu ấy ạ

Sao bạn không click chuột phải lên sheet cần copy, chọn Move or copy, click chọn Creat a copy, to To Book Chọn New Book xong lưu lại. muốn dùng code thì Record lại Macro.
Tạo 1 Userform, 1 combobox để lất tên sheet, 1 nút copy. Code như sau:

Mã:
Private Sub CommandButton1_Click()
Sheets(ComboBox1.Text).Copy
    ActiveWorkbook.SaveAs Filename:= _
       ThisWorkbook.Path & "\" & ComboBox1.Text & ".xls"
    ActiveWindow.Close
    
End Sub

Private Sub UserForm_Initialize()
For i = 1 To ThisWorkbook.Sheets.Count
    ComboBox1.AddItem ThisWorkbook.Sheets(i).Name
    
Next i

End Sub

Xem thêm file nhé.
 

File đính kèm

Upvote 0
Tôi là thành viên mới, tôi có vấn đề này đang gặp nhiều khó khăn muốn được GiaiphapExcel giúp đỡ. Tôi muốn tạo Sheét nhập chứng từ, thì số liệu sẽ tự động được chuyển sang Sheet2 và lưu tại Sheet2 theo hình thức luỹ kế. Khi tôi muốn nhập tiếp số liệu mới thì tôi phải xoá số liệu cũ trên Sheet1 đi để nhập, tuy nhiên để không bị mất số liệu đã lưu ở Sheet2 trước đó tôi phải làm sao? và làm sao để Sheet2 tiếp tục lưu dữ liệu sau đó? Rất mong được cộng đồng GiaiphapExcel chỉ giúp
Tôi chân thành cảm ơn!
 
Upvote 0
Oh, Có cả code như thế này nữa à, Các bác ơi em mù tịt về VBA nhưng hôm nay đi làm để máy tính mà ra ngoài không biết tên quỷ nào
delete mat cai file của em giờ phải làm lại từ đầu nè, tức quá, nên giờ tìm kiểu bạckup file từ thư mục này vào một thư mục khác, nhưng các đoạn code của các bác ở trên em không hiểu lắm.
Cho em hỏi là đoạn code trên có đoạn (.SaveCopyAs Replace(.FullName, .Name, "Bak" & Format(Now, "_ddmmyy_hhmmss_") & .Name)
có phải thay biến chẳng hạn như là đường dẫn thư mục gì không. mong các bác giúp đỡ tại em coppy đoạn code này vào module file của em mà không đuợc
Cảm ơn nhiều.
 
Upvote 0
Bạn gửi file lên đi, có thể mọi người sẽ giúp đựơc bạn đó, sức mạnh của tập thể thì có lẽ không gì là không thê làm được.
 
Upvote 0
Sao bạn không click chuột phải lên sheet cần copy, chọn Move or copy, click chọn Creat a copy, to To Book Chọn New Book xong lưu lại. muốn dùng code thì Record lại Macro.
Tạo 1 Userform, 1 combobox để lất tên sheet, 1 nút copy. Code như sau:

Mã:
Private Sub CommandButton1_Click()
Sheets(ComboBox1.Text).Copy
    ActiveWorkbook.SaveAs Filename:= _
       ThisWorkbook.Path & "\" & ComboBox1.Text & ".xls"
    ActiveWindow.Close
    
End Sub

Private Sub UserForm_Initialize()
For i = 1 To ThisWorkbook.Sheets.Count
    ComboBox1.AddItem ThisWorkbook.Sheets(i).Name
    
Next i

End Sub

Xem thêm file nhé.


Chào bạn có code nào mà tự nhận biết tên sheet không?
 
Upvote 0
Cảm ơn bạn harry potter về một ý tưởng rất hay, tuy nhiên cái mà tụi mình muốn nói là tự động lưu file ở một đường dẫn mà mình chọn trước ( Backup ) còn làm như bạn dường như cũng thủ công lắm, bạn có cách nào mới hơn ko ?
Cảm ơn.
 
Upvote 0
Cảm ơn anh Danh. Đoạn code cua a rất hay. Giờ em đang cần 1 file excel để quản lý các HĐLĐ(ngày ký, thời hạn và ngày hết hạn...). Anh có file mẫu thì post giùm em nhé.
Thanks!
 
Upvote 0
Bạn có thể hướng dẫn mình chi tiết cách sử dụng Backup này được không? thankyou.
 
Upvote 0
Tôi nghĩ thế này mới là ngắn gọn nhất đây:
PHP:
Sub Backup()
 With ThisWorkbook
   .Save
   .SaveCopyAs Replace(.FullName, .Name, "Bak" & Format(Now, "_ddmmyy_hhmmss_") & .Name)
 End With
End Sub
Ko cần khai báo bất cứ 1 biến nào
Theo tôi Backup ở đây nghĩa là mình muốn lưu toàn file excel lại giống như một file nén bằng winrar hoặc winzip vậy đó có bác nào biết xin chỉ giúp. Chứ còn coppy sang thư muc khác hoặc save as thì chỉ cần coppy và past là được rồi.
 
Upvote 0
Tôi nghĩ thế này mới là ngắn gọn nhất đây:
PHP:
Sub Backup()
 With ThisWorkbook
   .Save
   .SaveCopyAs Replace(.FullName, .Name, "Bak" & Format(Now, "_ddmmyy_hhmmss_") & .Name)
 End With
End Sub
Ko cần khai báo bất cứ 1 biến nào
Quá tuyệt vời, một đoạn code rất bổ ích.
Nhân đây cho mình hỏi thêm. Mình nuốn Backup chỉ 1 sheet chỉ định nào đó trong file trong cùng một thư mục thì đoạn code viết lại như thế nào ? Cám ơn nhiều !
 
Upvote 0
Các bạn ơi, cho mình hỏi có cách nào làm cho file excel mà mỗi khi bấm vào nút save thì nó sẽ tạo ra một file back up có tên tương tự và có luôn giờ ngày tháng, như vậy thì mình sẽ biết được thời điểm backup của file đó là khi nào. file backup mà được tạo ra sẽ được ở cùng nơi với file gốc.

Nhờ các bạn hướng dẫn chi tiết vì mình chưa biết nhiều về excel.Mong được giúp đỡ, xin chân thành cảm ơn.
 
Upvote 0
mình có copy đoạn code trên đó về và dán vào cửa sổ modle nhưng cũng chẳng thấy kết quả gì. Có ai biết cách dùng như thế nào kô ?
 
Upvote 0
Các anh chị giúp em đoạn code xóa file củ đã Backup và lưu lại file mới vừa Backup được không?
 
Upvote 0
Các bạn ơi, cho mình hỏi có cách nào làm cho file excel mà mỗi khi bấm vào nút save trong mircosoft excel thì nó sẽ tạo ra một file back up có tên tương tự và có luôn giờ ngày tháng, như vậy thì mình sẽ biết được thời điểm backup của file đó là khi nào. file backup mà được tạo ra sẽ được ở cùng nơi với file gốc.

Nhờ các bạn hướng dẫn chi tiết vì mình chưa biết nhiều về excel.Mong được giúp đỡ, xin chân thành cảm ơn.

Mình cũng đang tìm cái này mà chẳng thấy ở đâu có cả mà cũng chẳng ai quan tâm vấn đề này nữa rồi.
 
Upvote 0
Mình cũng đang tìm cái này mà chẳng thấy ở đâu có cả mà cũng chẳng ai quan tâm vấn đề này nữa rồi.

bạn chỉ cần ínert thêm một button rồi copy code của anhtuan1066 ở các trang trước vào là được thôi . khi nào muốn save bấm vào nút đó một cái là được rồi. làm phức tạp thêm làm chi cho mệt.. còn code thì trên GPE rất nhiều bạn chịu khó đọc và test đi một ngày nào đó bạn ngộ ra một điều ..để làm ra được như vậy thì ra nó là như vầy thì lúc đó bạn bắt đầu hiểu code và viết được những đoạn code đơn giản rồi đó .mình đang học theo kiểu như vậy
chúc thành công
 
Upvote 0
Cám ơn bạn đã chia sẻ và hồi đáp. Sau một chút mài mò thì mình hiểu được ý của bạn và làm dc rồi. mình tạo một nút button trong form control. Rồi chép đoạn code trên vào modle mới. Cho mình hỏi, là mình muốn đổi màu nền của cái nút thì làm sao hả bạn
 
Upvote 0
Cám ơn bạn đã chia sẻ và hồi đáp. Sau một chút mài mò thì mình hiểu được ý của bạn và làm dc rồi. mình tạo một nút button trong form control. Rồi chép đoạn code trên vào modle mới. Cho mình hỏi, là mình muốn đổi màu nền của cái nút thì làm sao hả bạn
bạn kích chuột phải vào button /Properties/Backcolor/bấm vào hình Tam giác / list sổ xuống / kích chọn màu bạn thích
nói chung trong Properties bạn làm được nhiều thứ Bạn cứ Từ Từ Nghiên cứu nhé
 
Upvote 0
- dùng Save xong SaveAs thì ActiveWork book sẽ là file backup. nên dùng 2 lần SaveAs (theo thứ tự đảo ngược) thì tốt hơn.

- cái này cũng gọn:

Dim FS As Object
Set FS = CreateObject("Scripting.FileSystemObject")
FS.CopyFile FullNameCopy, FullNamePaste
Set FS = Nothing
 
Upvote 0
Web KT

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

Back
Top Bottom