Menu

Tự động hóa việc tạo file Excel mới theo mẫu có sẵn bằng VBA

Tưởng Ninh Nghĩa 08/06/2026 16:40 435 lượt xem 2 trả lời

Chào các anh em, hôm nay mình muốn chia sẻ một chút kinh nghiệm về việc tự động hóa tạo file Excel mới theo một mẫu định sẵn bằng VBA. Trong công việc, đôi khi chúng ta cần tạo ra nhiều file Excel có cấu trúc tương tự nhau, ví dụ như báo cáo tuần, báo cáo tháng, hoặc các bảng theo dõi dự án.

Việc này nếu làm thủ công thì khá tốn thời gian và dễ sai sót. Mình đã thử viết một đoạn code VBA để giải quyết vấn đề này và thấy khá hiệu quả. Ý tưởng cơ bản là:

  • Tạo một file Excel mẫu (ví dụ: Template.xlsx) với các sheet, định dạng, công thức, thậm chí là các validation list đã được thiết lập sẵn.
  • Viết một đoạn code VBA để:
    • Hỏi người dùng tên file mới và vị trí lưu.
    • Copy toàn bộ nội dung từ file mẫu sang một file mới.
    • Lưu file mới với tên và vị trí do người dùng chỉ định.
    • Có thể thêm các tùy chỉnh khác như điền sẵn một số thông tin cơ bản vào file mới.

Đoạn code minh họa có thể trông như thế này:

Sub CreateNewFileFromTemplate()
    Dim templatePath As String
    Dim newFileName As String
    Dim newFilePath As String
    Dim wbTemplate As Workbook
    Dim wbNew As Workbook

    ' Đường dẫn đến file mẫu
    templatePath = ThisWorkbook.Path & "\Template.xlsx"

    ' Hỏi người dùng tên file mới
    newFileName = InputBox("Nhập tên file mới:", "Tạo file mới", "BaoCaoThang_" & Format(Date, "yyyy_mm"))
    If newFileName = "" Then Exit Sub

    ' Hỏi người dùng vị trí lưu
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Chọn thư mục lưu file mới"
        .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        newFilePath = .SelectedItems(1) & "\" & newFileName & ".xlsx"
    End With

    ' Mở file mẫu
    Set wbTemplate = Workbooks.Open(templatePath)

    ' Copy và lưu file mới
    wbTemplate.SaveAs newFilePath
    Set wbNew = Workbooks(newFileName & ".xlsx")

    ' Đóng file mẫu
    wbTemplate.Close SaveChanges:=False

    MsgBox "Đã tạo file mới thành công!", vbInformation
End Sub

Tất nhiên, đoạn code này chỉ là cơ bản. Các bạn có thể tùy biến thêm rất nhiều thứ, ví dụ như yêu cầu người dùng nhập các thông tin để điền vào file mới ngay khi tạo, hoặc tự động đặt tên file dựa trên ngày tháng năm.

Anh em nào có cách làm hay hơn hoặc gặp khó khăn gì khi áp dụng thì cùng thảo luận nhé!

3

Hay quá bạn ơi! Mình cũng đang đau đầu vụ này. Bạn có thể chia sẻ cụ thể hơn về đoạn code bạn dùng để tạo file mới từ template không? Ví dụ như cách chỉ định tên file mới, đường dẫn lưu trữ, hoặc cách copy dữ liệu từ file gốc sang file mới nếu có.

4
Hay quá bạn ơi! Mình cũng đang đau đầu vụ này. Bạn có thể chia sẻ cụ thể hơn về đoạn code bạn dùng để tạo file mới từ template không? Ví dụ như cách chỉ định tên file mới, đường dẫn lưu trữ, hoặc cách copy dữ liệu từ file gốc sang file mới nếu có.

Cảm ơn bạn đã chia sẻ kinh nghiệm quý báu này. Tự động hóa việc tạo file theo mẫu bằng VBA thực sự giúp ích rất nhiều cho công việc văn phòng. Mình cũng từng gặp tình huống tương tự và nhận thấy thủ công rất dễ phát sinh lỗi. Bạn có thể cho mình biết thêm về cách bạn xử lý các trường hợp đặc biệt không, ví dụ như khi template có nhiều sheet hoặc cần cập nhật dữ liệu động vào file mới tạo không?

3

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký