Chào mọi người,
Dạo này mình làm nhiều file Excel quá, mỗi lần lưu lại phải đặt tên thủ công, đôi khi quên mất hoặc đặt tên không nhất quán làm sau này tìm lại rất mất thời gian. Hôm nay mình muốn chia sẻ một mẹo nhỏ mà mình mới phát hiện ra để tự động đặt tên file khi lưu, giúp quản lý dữ liệu khoa học hơn.
Ý tưởng là mình sẽ dùng một ô trong file Excel để nhập thông tin chính, sau đó dùng một đoạn mã VBA nhỏ để khi nhấn nút lưu, file sẽ tự động đặt tên theo cấu trúc mình mong muốn. Ví dụ, mình muốn đặt tên file theo dạng: [Loại Báo Cáo]_[Ngày Tháng Năm]_[Tên Dự Án].
Cách làm như sau:
- Tạo một Sheet mới, đặt tên là 'Config'.
- Tại Sheet 'Config', tạo các ô để nhập thông tin:
- Ô A1: Nhập loại báo cáo (Ví dụ: 'BaoCaoThang')
- Ô B1: Nhập tên dự án (Ví dụ: 'DuAnX')
- Mở VBA Editor (Alt + F11).
- Insert một Module mới.
- Dán đoạn mã sau vào Module:
Sub AutoSaveFile()
Dim wsConfig As Worksheet
Dim reportType As String
Dim projectName As String
Dim fileName As String
Dim savePath As String
Set wsConfig = ThisWorkbook.Sheets('Config')
reportType = wsConfig.Range('A1').Value
projectName = wsConfig.Range('B1').Value
If reportType = '' Or projectName = '' Then
MsgBox 'Vui lòng nhập đầy đủ thông tin Loại Báo Cáo và Tên Dự Án trong Sheet Config.', vbExclamation
Exit Sub
End If
fileName = reportType & '_' & Format(Date, 'yyyyMMdd') & '_' & projectName & '.xlsm' ' Sử dụng .xlsm vì có VBA
savePath = Application.GetSaveAsFilename(InitialFileName:=fileName, FileFilter:='Excel Macro-Enabled Workbook (*.xlsm), *.xlsm')
If savePath <> 'False' Then
ThisWorkbook.SaveAs Filename:=savePath
End If
End SubSau khi dán mã, bạn có thể tạo một nút bấm trên giao diện chính của file và gán macro AutoSaveFile cho nó. Mỗi lần muốn lưu, chỉ cần nhập thông tin vào Sheet 'Config' rồi nhấn nút.
Cách này giúp mình tiết kiệm kha khá thời gian và tránh sai sót khi đặt tên file. Hy vọng chia sẻ này hữu ích cho mọi người!