Microsoft Excel VBA Automation là gì?

Trong công việc hàng ngày, có nhiều thao tác lặp đi lặp lại rất nhiều lần, dễ tạo ra sự nhàm chán và nhầm lẫn, đồng thời cũng rất tốn thời gian.

Để khắc phục việc này, chúng ta có thể sử dụng tính năng VBA trong Microsoft Excel (cũng như Microsoft Word, Microsoft Outlook…) là một tính năng miễn phí và rất mạnh mẽ, có sẵn trong phần mềm này.

Ví dụ chúng ta muốn tự động hóa việc tạo ra các file tính lương (payslip) riêng lẻ cho từng nhân viên từ 1 danh sách tổng hợp sau:

No Họ và tên Lương Thưởng Tổng
1 Bùi Như Lạc            20,000,000            5,000,000  
2 Ngọt Như Mía            22,000,000            6,000,000  
3 Chậm Như Sên            33,000,000            7,000,000  
4 Nhanh Như Cắt            44,000,000            8,000,000  
5 Nặng Như Chì            55,000,000            9,000,000  
6 Nhẹ Như Bấc            90,000,000         20,000,000  

Hãy copy bảng trên và paste vào Excel như hình dưới:

Trong cột F, hãy điền công thức tính tổng lương và thưởng cho tất cả các nhân viên.

Để bắt đầu thực hiện việc tự động hóa, bấm tổ hợp phím Alt+F11 (giữ phím Alt và bấm phím F11).

Bấm đúp (double click) vào Sheet1 trong danh sách bên trái. Màn hình sẽ tương tự như dưới đây:

Copy và paste đoạn mã dưới đây vào cửa sổ bên phải của màn hình đó:

Option Explicit

Public Sub Tao_Phieu_Luong()
    Dim MyCell As Range
    Dim TenNhanVien As String
    Dim Luong As Long
    Dim Thuong As Long
    
    Dim ws As Worksheet
    Application.DisplayAlerts = False
    For Each ws In Sheets
        If ws.Name <> "Sheet1" Then ws.Delete
    Next
    Application.DisplayAlerts = True
    
    Dim FirstNameCell As Range
    Set FirstNameCell = Sheet1.Range("A1:Z100").Find("H" & ChrW(&H1ECD) & " và tên")
    If FirstNameCell Is Nothing Then
        MsgBox "Khong tim thay 'Ho va ten'"
        Exit Sub
    End If
    Set FirstNameCell = FirstNameCell.Offset(1, 0)
    
    For Each MyCell In Sheet1.Range(FirstNameCell, FirstNameCell.End(xlDown))
        TenNhanVien = MyCell
        Luong = MyCell.Offset(0, 1).Value
        Thuong = MyCell.Offset(0, 2)
        
        Sheets.Add after:=Sheet1
        Set ws = ActiveSheet
        
        ws.Name = TenNhanVien
        
        ws.Range("B3") = "Bang luong nhan vien: " & UCase(TenNhanVien)
        ws.Range("B3").Font.Size = 20
        
        ws.Range("B5") = "Luong: "
        ws.Range("C5") = Luong
    
        ws.Range("B6") = "Thuong: "
        ws.Range("C6") = Thuong
    
        ws.Range("B7") = "TONG: "
        ws.Range("C7").Formula = "= C5 + C6"
    
        ws.Range("C5:C7").NumberFormat = "[Blue]#,##0 ""VND"""
        ws.Range("C1").ColumnWidth = 20
    Next
    
    MsgBox "Da xu ly xong!"
End Sub

Sau khi paste, kết quả như hình dưới đây:

Quay trở lại bảng danh sách nhân viên, chèn một nút bấm trên Excel, để khi bấm thì tự động chạy mã lệnh trên.

Các bước như sau: (1) bấm vào tab Insert, (2) bấm vào Shapes, (3) bấm chọn ví dụ hình chữ nhật bo tròn 4 góc.

Bấm chuột phải vào hình chữ nhật màu xanh vừa chèn vào, chọn mục “Edit Text”, nhập vào chữ “Tạo các bảng lương”

Bấm chuột phải lần nữa vào hình này, chọn mục “Assign Macro” như hình dưới:

Bấm chọn Sheet1.Tao_Bang_Luong rồi bấm OK như hình dưới:

Bấm chuột vào một ô nào đó bên ngoài nút bấm màu xanh.

Trỏ chuột vào nút bấm màu xanh, con trỏ chuột biến thành hình bàn tay, bấm vào nút màu xanh này. Trong vòng chưa tới 10 giây, các sheet tính lương riêng biệt cho từng nhân viên được tự động tạo ra tương ứng với mỗi dòng trong danh sách tổng hợp.

Công thức tính tổng lương theo hàng dọc được tự động đưa vào. Có thể format dữ liệu số trong cell theo hình thức mong muốn (ví dụ thêm chữ VND vào phía sau), nhưng vẫn đảm bảo tính toán bằng công thức được bình thường, như cell C7 trong hình dưới.

Kết luận: Với Microsoft VBA miễn phí có sẵn trong Microsoft Excel, chúng ta có thể tự động hóa các thao tác lặp đi lặp lại, nhàm chán, dễ sai sót và tốn thời gian. Quá trình chạy tự động này diễn ra vô cùng nhanh chóng: mỗi lần cần tạo ra danh sách các bảng tính lương chi tiết, chỉ mất vài chục giây.

Trong các giải pháp tự động hóa đầy đủ, có thể đưa hỗ trợ tiếng Việt đầy đủ vào tất cả các công đoạn có liên quan, có thể tạo ra các file PDF riêng lẻ cho bảng tính lương của từng nhân viên, đặt mật khẩu bảo vệ các file PDF này, và tự động gửi email tới từng nhân viên.

Bài viết này mang tính chất giới thiệu về Microsoft Excel VBA. Việc xây dựng các giải pháp này thông thường khá là phức tạp và cần kiến thức chuyên về CNTT.

Hãy liên hệ với chúng tôi để nhận được sự hỗ trợ.