Macro là một đoạn chương trình nhỏ chạy bên trong Excel, viết bằng ngôn ngữ VBA, làm thay bạn những thao tác lặp đi lặp lại: định dạng lại báo cáo, xoá các dòng có điều kiện, chép dữ liệu từ trang này sang trang khác, lưu file theo tên quy định. Trước đây muốn có macro phải biết lập trình hoặc nhờ người biết. Giờ bạn có thể mô tả việc bằng tiếng Việt cho ChatGPT, Claude, Gemini hay Copilot và nhận về một đoạn mã chạy được.
Chữ "chạy được" ở đây cần dè dặt. Mã do AI viết có thể đúng ý, có thể đúng một nửa, và đôi khi xoá mất dữ liệu bạn không định xoá. Macro chạy xong thì không bấm Ctrl+Z quay lại được. Bài này đưa ra một quy trình đủ chặt để người không chuyên vẫn dùng macro AI viết một cách an toàn: mô tả việc, đặt mã vào đúng chỗ, chạy thử, rồi mới đưa vào dùng hằng ngày.
Việc nào đáng viết macro, việc nào không
Một việc đáng làm thành macro khi hội đủ ba điều: lặp lại thường xuyên, các bước giống nhau mỗi lần, và làm tay mất thời gian hoặc dễ sai. Ví dụ điển hình là định dạng báo cáo xuất từ phần mềm mỗi sáng: đổi độ rộng cột, tô màu dòng tiêu đề, cố định dòng đầu, xoá các cột không dùng, đặt vùng in. Hoặc chép dữ liệu ngày hôm qua từ trang nhập liệu sang trang lưu trữ rồi xoá trắng trang nhập.
Ngược lại, có những việc không nên dùng macro dù làm được. Nếu việc chỉ là xử lý hình dạng bảng dữ liệu, như bỏ dòng thừa, tách cột, gộp nhiều file, Power Query an toàn hơn vì không sửa dữ liệu gốc và dễ cho người sau đọc. Nếu việc là tính toán, công thức minh bạch hơn. Macro hợp nhất với những thao tác mà công thức và Power Query không làm được: thao tác trên giao diện, định dạng, in, lưu file, di chuyển giữa các trang.
Một tiêu chí nữa: ai sẽ bảo trì. Macro nằm trong file, nếu người viết nghỉ việc mà không ai đọc hiểu được thì khi có lỗi cả phòng đành quay về làm tay. Vì thế mỗi macro nên kèm một đoạn mô tả ngắn bằng tiếng Việt về việc nó làm, đặt ngay trong mã dưới dạng chú thích. Bạn có thể yêu cầu AI làm luôn phần này.
Mô tả việc cho AI sao cho mã ra đúng
Chất lượng mã AI viết phụ thuộc gần như hoàn toàn vào chất lượng mô tả. Những mô tả kiểu "viết macro định dạng báo cáo cho đẹp" sẽ cho ra mã đoán mò. Hãy mô tả như đang giao việc cho một nhân viên mới chưa bao giờ thấy file của bạn.
- Nói rõ phiên bản: Excel trên Windows hay Mac, bản cài trên máy hay bản dùng trên trình duyệt. Excel trên trình duyệt không chạy VBA.
- Mô tả cấu trúc: tên các trang tính, dòng tiêu đề nằm ở dòng nào, dữ liệu bắt đầu từ ô nào, tên các cột cần dùng, số dòng thay đổi mỗi ngày hay cố định.
- Mô tả việc theo từng bước như khi bạn làm tay, đánh số. Ví dụ: một, xoá cột C và cột F; hai, sắp xếp theo cột Ngày tăng dần; ba, tô đậm dòng 1.
- Nói rõ những điều không được làm: không xoá trang nào, không lưu đè file, không đụng vào trang "DanhMuc".
- Yêu cầu thêm: mã có chú thích tiếng Việt cho từng đoạn, có hộp thoại hỏi xác nhận trước khi xoá, và báo số dòng đã xử lý khi chạy xong.
Một câu lệnh mẫu: "Viết macro VBA cho Excel trên Windows. File có trang NhapLieu, dòng 1 là tiêu đề, dữ liệu từ dòng 2, số dòng thay đổi mỗi ngày. Việc cần làm: chép toàn bộ dữ liệu từ dòng 2 trang NhapLieu xuống dưới dòng cuối cùng có dữ liệu của trang LuuTru, sau đó xoá dữ liệu trang NhapLieu nhưng giữ dòng tiêu đề. Trước khi xoá phải hỏi xác nhận. Chạy xong báo số dòng đã chép. Thêm chú thích tiếng Việt." Nếu cần cho AI xem dữ liệu, chỉ mô tả tên cột, đừng dán dữ liệu thật của khách hàng hay nhân viên.
Đặt mã vào Excel và lưu đúng định dạng
Nhiều người nhận được mã từ AI rồi loay hoay không biết dán vào đâu. Các bước dưới đây dùng cho Excel trên Windows; trên Mac thao tác tương tự nhưng tên menu có thể khác.
- Bật thẻ Developer nếu chưa thấy: vào File, Options, Customize Ribbon, đánh dấu Developer ở cột bên phải.
- Mở trình soạn thảo VBA bằng tổ hợp Alt+F11 hoặc nút Visual Basic trong thẻ Developer.
- Ở khung Project bên trái, chọn đúng file đang làm, vào menu Insert, chọn Module. Một trang trắng hiện ra; dán mã AI viết vào đây.
- Đóng trình soạn thảo, lưu file dưới định dạng Excel Macro-Enabled Workbook, đuôi .xlsm. Nếu lưu thành .xlsx, Excel sẽ cảnh báo và bỏ toàn bộ macro.
- Khi mở lại file, Excel có thể hiện thanh cảnh báo bảo mật về macro. Chỉ bật macro với file bạn biết rõ nguồn gốc.
Lưu ý về file tải từ mạng hoặc nhận qua email: các bản Office gần đây mặc định chặn macro trong file có nguồn từ internet, và bạn sẽ thấy thông báo macro bị chặn. Đây là cơ chế bảo vệ, đừng tắt cho tiện. Với file do chính bạn tạo trên máy, vấn đề này thường không xảy ra.
Chạy thử: ba lớp an toàn trước khi dùng thật
Lớp một, chạy trên bản sao. Sao chép file thành một bản khác tên, ví dụ thêm chữ THU vào cuối tên, và chỉ chạy macro trên bản đó. Nếu macro xoá nhầm, bạn mất bản sao chứ không mất dữ liệu thật. Đây là quy tắc không có ngoại lệ, kể cả khi mã trông rất đơn giản.
Lớp hai, chạy từng dòng. Trong trình soạn thảo VBA, đặt con trỏ vào trong macro và bấm F8 để chạy từng dòng một. Sắp xếp cửa sổ để vừa nhìn được mã vừa nhìn được trang tính, bạn sẽ thấy mỗi dòng mã làm gì với bảng. Cách này chậm nhưng là cách tốt nhất để hiểu mã mà không cần biết lập trình.
Lớp ba, so trước và sau. Trước khi chạy, ghi lại vài con số: số dòng của từng trang, tổng một cột số tiền. Sau khi chạy, đếm lại. Macro chép dữ liệu thì tổng số dòng phải được bảo toàn; macro xoá thì số dòng giảm đúng bằng số dòng thoả điều kiện.
Khi có lỗi. VBA sẽ dừng và tô vàng dòng gây lỗi. Chép câu báo lỗi nguyên văn, cùng dòng mã bị tô và mô tả bạn đang làm gì, gửi lại cho AI. Thường sau một hai vòng là mã chạy đúng. Nếu sau bốn năm vòng vẫn lỗi, hãy xem lại mô tả ban đầu: rất có thể bạn mô tả cấu trúc file chưa đúng thực tế.
Gắn macro vào nút bấm cho đồng nghiệp dùng
Khi macro đã chạy đúng trên bản sao qua vài lần với dữ liệu khác nhau, bạn có thể đưa vào file thật và làm cho đồng nghiệp dùng dễ hơn. Có vài cách gắn:
- Nút trên trang tính: trong thẻ Developer, chọn Insert, nút Button trong nhóm Form Controls, vẽ nút lên trang và chọn macro cần gắn. Đổi chữ trên nút thành tên việc rõ ràng, ví dụ "Chép sang lưu trữ".
- Nút trên thanh công cụ nhanh: chuột phải vào thanh Quick Access Toolbar, chọn tuỳ chỉnh, chọn Macros và thêm vào. Cách này hợp khi chỉ một mình bạn dùng.
- Phím tắt: trong hộp thoại Macro, chọn Options để gán tổ hợp phím. Tránh gán trùng phím quen như Ctrl+C, Ctrl+S vì macro sẽ chiếm phím đó trong file.
- Đặt nút ở vị trí cố định, xa vùng dữ liệu, để không ai bấm nhầm khi đang cuộn bảng.
- Ghi một dòng hướng dẫn cạnh nút: bấm khi nào, bấm xong kiểm gì.
Với macro có thao tác xoá, nên giữ hộp thoại xác nhận ngay cả khi đồng nghiệp thấy phiền. Hộp thoại đó là lần cuối cùng để ai đó nhận ra mình đang mở nhầm file. Và nhớ rằng trong file dùng chung, macro không xem được trên Excel bản trình duyệt; người dùng phải mở bằng ứng dụng Excel trên máy tính.
Ví dụ giả định: macro định dạng bảng công nợ mỗi sáng
Ví dụ giả định: kế toán một công ty vật liệu xây dựng ở Thanh Hoá mỗi sáng xuất bảng công nợ khách hàng từ phần mềm. Bảng ra đời với cột rộng hẹp lộn xộn, ngày ở dạng chữ, ba cột kỹ thuật không ai đọc, và không có dòng tiêu đề cố định nên cuộn xuống là mất tên cột. Mỗi sáng mất mười phút chỉnh lại trước khi gửi cho giám đốc xem.
Kế toán mô tả cho AI đúng sáu việc: xoá ba cột kỹ thuật theo tên cột chứ không theo vị trí, đổi cột ngày sang dạng ngày, tự chỉnh độ rộng cột, tô đậm và tô nền dòng tiêu đề, cố định dòng đầu, đặt vùng in vừa một trang chiều ngang. Mã AI trả về khoảng ba mươi dòng có chú thích. Lần chạy thử đầu tiên trên bản sao báo lỗi ở dòng xoá cột vì tên cột trong file thật có khoảng trắng ở cuối; kế toán gửi lại câu báo lỗi, AI sửa bằng cách bỏ khoảng trắng trước khi so tên.
Sau ba ngày chạy thử song song với cách làm tay và so kết quả, macro được gắn vào nút trên thanh công cụ nhanh. Mười phút mỗi sáng còn vài giây. Kế toán vẫn giữ thói quen nhìn qua tổng công nợ trước và sau khi chạy, vì macro định dạng không được làm thay đổi bất kỳ con số nào.
Giới hạn của cách làm này
Nhờ AI viết macro giúp người không chuyên làm được nhiều việc, nhưng nên biết điểm dừng. Macro tốt cho việc vài chục dòng mã, chạy trong một file, do một nhóm nhỏ dùng. Khi macro dài ra hàng trăm dòng, đụng vào nhiều file, gửi thư, kết nối hệ thống khác, rủi ro tăng nhanh và việc bảo trì trở thành gánh nặng. Lúc đó nên cân nhắc nhờ người có chuyên môn, hoặc tìm phần mềm làm sẵn việc đó.
Một giới hạn khác là bạn chịu trách nhiệm về mã mình chạy, dù AI viết. Nếu không hiểu một đoạn mã làm gì, đừng chạy trên file thật. Bài về đọc hiểu mã AI viết trong danh mục này liệt kê những dòng lệnh cần cảnh giác, như lệnh xoá file, lệnh tắt cảnh báo, vòng lặp không có điểm dừng.
Cuối cùng, nhớ che dữ liệu. Khi gửi lỗi cho AI, đừng chép kèm cả bảng dữ liệu thật; chỉ cần dòng mã, câu báo lỗi và mô tả cấu trúc. Trang AI Lập Trình trong cùng hệ có thêm hướng dẫn cho người muốn đi sâu vào viết mã.
Câu hỏi thường gặp
Macro do AI viết có an toàn không?
Bản thân mã AI viết thường không có ý đồ xấu, nhưng có thể sai logic và xoá nhầm dữ liệu. Vì macro không hoàn tác được, hãy luôn chạy thử trên bản sao, chạy từng dòng bằng F8 và so số dòng trước sau khi dùng trên file thật.
Vì sao lưu file xong thì macro biến mất?
Gần như chắc chắn file được lưu với đuôi .xlsx, định dạng không chứa macro. Cần lưu thành Excel Macro-Enabled Workbook với đuôi .xlsm. Nếu đã lỡ lưu .xlsx và đóng file, phải dán lại mã.
Excel trên trình duyệt có chạy macro VBA không?
Không. VBA chỉ chạy trên ứng dụng Excel cài trên máy tính. Excel trên trình duyệt có công cụ tự động hoá riêng là Office Scripts, tuỳ loại tài khoản mới có, và cách viết khác hẳn VBA.
Có nên dùng chức năng ghi macro thay vì nhờ AI?
Chức năng ghi macro hữu ích để có mã khởi đầu, nhất là phần định dạng. Nhưng mã ghi lại thường cứng nhắc, gắn với đúng vùng ô lúc ghi. Có thể ghi trước, rồi nhờ AI sửa cho chạy với số dòng thay đổi và thêm chú thích.
Đồng nghiệp mở file báo macro bị chặn thì làm sao?
Nếu file nhận qua email hoặc tải từ mạng, Office chặn macro để bảo vệ. Người nhận có thể vào thuộc tính của file trên Windows và chọn bỏ chặn, nhưng chỉ làm khi chắc chắn file do người trong công ty gửi. Lưu file trên thư mục dùng chung đáng tin cậy là cách gọn hơn.