Chào các bạn, mình là thành viên mới của diễn đàn và cũng là một người khá thích mày mò VBA để tự động hóa công việc. Hôm nay mình muốn chia sẻ một đoạn code nhỏ mà mình đã tự viết để giúp tạo các tệp tin Excel mới dựa trên một tệp tin mẫu có sẵn. Tính năng này rất hữu ích khi các bạn cần tạo nhiều báo cáo theo một cấu trúc định sẵn, ví dụ như báo cáo doanh thu hàng ngày, báo cáo tồn kho, hay các biểu mẫu nhập liệu.
Vấn đề gặp phải:
Trước đây, mỗi khi cần tạo một báo cáo mới, mình thường phải mở tệp tin mẫu ra, sau đó Save As sang một tên mới rồi mới bắt đầu nhập liệu. Việc này tốn khá nhiều thời gian và dễ bị nhầm lẫn nếu quên đổi tên hoặc chỉnh sửa nhầm vào file mẫu gốc.
Giải pháp với VBA:
Mình đã viết một đoạn code đơn giản để giải quyết vấn đề này. Ý tưởng là:
- Xác định tệp tin mẫu.
- Nhập tên tệp tin mới mong muốn.
- Copy toàn bộ nội dung và định dạng từ tệp tin mẫu sang một tệp tin mới hoàn toàn.
- Lưu tệp tin mới với tên đã nhập.
Dưới đây là đoạn code minh họa:
Sub CreateNewFileFromTemplate()
Dim templatePath As String
Dim newFileName As String
Dim wbTemplate As Workbook
Dim wbNew As Workbook
' --- Cấu hình ---
templatePath = "C:\DuLieu\MauBaoCao.xlsx" ' Thay đổi đường dẫn đến tệp tin mẫu của bạn
' Yêu cầu người dùng nhập tên tệp tin mới
newFileName = InputBox("Nhập tên tệp tin mới (không bao gồm đuôi .xlsx):", "Tạo tệp tin mới")
If newFileName = "" Then
MsgBox "Bạn chưa nhập tên tệp tin. Thao tác bị hủy bỏ.", vbExclamation
Exit Sub
End If
newFileName = newFileName & ".xlsx"
' Mở tệp tin mẫu
On Error Resume Next
Set wbTemplate = Workbooks.Open(templatePath)
If wbTemplate Is Nothing Then
MsgBox "Không tìm thấy tệp tin mẫu tại đường dẫn: " & templatePath, vbCritical
Exit Sub
End If
On Error GoTo 0
' Copy tệp tin mẫu sang một tệp tin mới
wbTemplate.SaveCopyAs newFileName
' Mở tệp tin mới vừa tạo
Set wbNew = Workbooks.Open(newFileName)
' Đóng tệp tin mẫu mà không lưu (tránh chỉnh sửa nhầm)
wbTemplate.Close SaveChanges:=False
MsgBox "Đã tạo thành công tệp tin mới: " & newFileName, vbInformation
End SubLưu ý:
- Bạn cần thay đổi biến
templatePathcho phù hợp với đường dẫn và tên tệp tin mẫu của bạn. - Tệp tin mẫu nên được lưu dưới định dạng
.xlsxhoặc.xlsm(nếu mẫu có macro). - Đoạn code này chỉ đơn giản là copy file, nếu bạn muốn tự động điền một số thông tin vào file mới (ví dụ: ngày tháng, tên người dùng) thì cần bổ sung thêm các dòng code xử lý sau khi mở
wbNew.
Hy vọng chia sẻ này hữu ích cho các bạn. Nếu có thắc mắc hay có cách làm hay hơn, mọi người cùng thảo luận nhé!