Menu

Tự động hóa việc đổi tên nhiều Sheet cùng lúc bằng VBA

Bùi Thiện Mỹ 15/06/2026 20:21 288 lượt xem 3 trả lời

Chào các anh chị em trong diễn đàn,

Mình thường xuyên phải làm việc với các file Excel có nhiều Sheet, đôi khi cần phải đổi tên hàng loạt theo một quy tắc nhất định. Việc đổi tên thủ công từng Sheet rất mất thời gian và dễ sai sót, đặc biệt với những file có hàng chục, thậm chí hàng trăm Sheet.

Hôm nay, mình chia sẻ một đoạn code VBA nhỏ giúp tự động hóa việc này. Code này cho phép đổi tên các Sheet dựa trên một tiền tố (prefix) và một số thứ tự tăng dần.

Ví dụ, nếu bạn muốn đổi tên các Sheet thành "BaoCao_01", "BaoCao_02", "BaoCao_03",...

Đây là đoạn code:

Sub RenameSheets() 
    Dim ws As Worksheet 
    Dim i As Integer 
    Dim prefix As String 
    
    prefix = InputBox("Nhập tiền tố cho tên Sheet:", "Đổi Tên Sheet", "BaoCao_") 
    
    If prefix = "" Then Exit Sub ' Người dùng nhấn Cancel hoặc để trống 
    
    i = 1 
    For Each ws In ThisWorkbook.Worksheets 
        ws.Name = prefix & Format(i, "00") ' Định dạng số với 2 chữ số (01, 02, ...)
        i = i + 1 
    Next ws 
    
    MsgBox "Đã đổi tên " & (i - 1) & " Sheet thành công!", vbInformation
End Sub

Cách sử dụng:

  • Nhấn Alt + F11 để mở cửa sổ VBA.
  • Vào Insert > Module.
  • Dán đoạn code trên vào.
  • Chạy Sub RenameSheets (nhấn F5 hoặc từ menu Run).
  • Một hộp thoại sẽ hiện ra yêu cầu bạn nhập tiền tố. Nhập tiền tố bạn muốn và nhấn OK.

Code sẽ tự động duyệt qua tất cả các Sheet trong file hiện tại và đổi tên chúng theo tiền tố bạn cung cấp, kèm theo số thứ tự tăng dần được định dạng 2 chữ số (ví dụ: 01, 02, ..., 10, 11,...).

Hy vọng đoạn code này hữu ích cho các bạn thường xuyên phải xử lý nhiều Sheet. Nếu có thắc mắc hoặc muốn tùy chỉnh thêm, đừng ngần ngại hỏi nhé!

5

Chào bạn,

Cảm ơn bạn đã chia sẻ đoạn code VBA hữu ích này! Mình cũng hay gặp tình huống tương tự, việc đổi tên Sheet thủ công đúng là rất tốn thời gian.

Đoạn code của bạn có vẻ rất trực quan với tiền tố và số thứ tự. Không biết bạn có thể chia sẻ thêm về cách xử lý trường hợp các Sheet cần đổi tên không theo thứ tự liên tục không? Ví dụ, có thể bỏ qua một số Sheet nhất định hoặc chỉ đổi tên những Sheet có tên cũ nằm trong một danh sách cho trước?

Rất mong nhận được thêm chia sẻ từ bạn!

4

Tuyệt vời! Cảm ơn bạn đã chia sẻ đoạn code này. Tự động hóa đổi tên Sheet đúng là cứu cánh cho những ai làm việc với nhiều file như mình.

Mình cũng có một cách khác để xử lý tình huống này, có thể hữu ích cho mọi người. Thay vì dùng tiền tố và số thứ tự, mình thường lấy tên của một ô trong Sheet làm tên mới cho chính Sheet đó. Ví dụ, ô A1 của mỗi Sheet chứa tên mà mình muốn đặt cho Sheet.

Cách này khá linh hoạt khi tên Sheet cần đặt có thể không theo quy luật số thứ tự. Bạn có thể tham khảo và thử nghiệm nhé!

0

Mình cũng hay dùng cách lấy tên từ ô A1 để đặt tên Sheet, nó rất tiện khi tên Sheet được quản lý sẵn trong một bảng dữ liệu.

Tuy nhiên, với trường hợp của bạn, đổi tên theo tiền tố và số thứ tự thì code VBA kia là một giải pháp rất hay. Nó giúp xử lý nhanh gọn khi quy luật đặt tên rõ ràng.

Bạn có thể chia sẻ thêm về cách bạn xử lý trường hợp có những Sheet bạn không muốn đổi tên không? Ví dụ, Sheet "Tổng hợp" chẳng hạn?

1

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

Đăng nhập Đăng ký