Mình giải thích từng câu lệnh, hy vọng bạn và những bạn khác mới làm quen với VBA có thế áp dụng cho những yêu cầu phát sinh khác. Lưu ý dòng code màu đỏ. Ban có thể khoá sheet và để lại những ô cho phép ngưòi sử dụng nhập thông tin. Chúc thành công
Sub CopySheet()
' khong hien thi thong bao nhac nho len man hinh.Can than, su dung cai nay hoi nguy hiem neu co file trung ten van bi save de len tap tin cu
Application.DisplayAlerts = False
'Dat ten sheet bang gia tri o B2 tu sheet2
ActiveSheet.Name = Sheets(2).[b2]
'Mo khoa sheet hien hanh
ActiveSheet.Unprotect
'Sao chep noi dung cua sheet hien hanh vao bo nho may tinh
ActiveSheet.Copy
' Dan gia tri tat ca vung co du lieu va xoa nhung hinh ve neu co
With ActiveSheet
.UsedRange.Value = .UsedRange.Value
'loai bo het cong thuc
.DrawingObjects.Delete
'Xoa het nhung hinh ve
End With
End Sub
Sub HK_1()
'Khong cho man hinh giat giat de cho code chay nhanh hon
Application.ScreenUpdating = False
' Tao bien Fname de gan ten cho file sap tao (lay tu 2 o cua sheet2)
Fname = Sheets("sheet2").[b2] & Sheets("sheet2").[b1]
'Goi macro de thuc hien nhung dong lenh cua macro Copysheet
Call CopySheet
'Xoa nhung cot can xoa
Union([c
], [r:ai], [am:an]).EntireColumn.Delete
'Khoa sheet hien hanh
Sheets(1).Protect
' Luu File vao dong File lai
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & Fname & "HK1.xls"
'luu File
.Close
'Dong File
End With
' Go bo thuoc tinh khoa cells cua nhung cells muon khong khoa
[AK6:AN50].Locked = False
'Khoa sheet hien hanh lai, nhung cells phia tren se khong bi khoa
ActiveSheet.Protect
End Sub
Sub HK_2()
Application.ScreenUpdating = False
Fname = Sheets("sheet2").[b2] & Sheets("sheet2").[b1]
Call CopySheet
Union([a:q], [t:ag]).EntireColumn.Delete
Sheets(1).Protect
With ActiveWorkbook
.SaveAs ThisWorkbook.Path & "\" & Fname & "HK2.xls"
.Close
End With
[AK6:AN50].Locked = False
ActiveSheet.Protect
End Sub