Trong môi trường làm việc hiện đại, Microsoft Excel không chỉ là một công cụ bảng tính đơn thuần mà còn là một nền tảng mạnh mẽ cho việc tự động hoá quy trình nhờ vào Macro (hay còn gọi là VBA – Visual Basic for Applications). Tuy nhiên, không ít người dùng, đặc biệt là những người mới bắt đầu hoặc thậm chí là các chuyên gia, đã gặp phải thông báo lỗi “Excel cannot run the macro” khi cố gắng thực thi một macro. Thông báo này không chỉ gây bối rối mà còn làm gián đoạn công việc, gây mất thời gian và hiệu suất.
Bài viết này sẽ đi sâu vào nguyên nhân gây ra lỗi “Excel cannot run the macro”, phân loại các trường hợp thường gặp, đưa ra các giải pháp chi tiết từng bước và một số lưu ý quan trọng để người dùng có thể phòng ngừa và khắc phục nhanh chóng. Với hơn 1500 chữ, bạn sẽ có một tài liệu tham khảo toàn diện, có thể dùng làm hướng dẫn nội bộ, tài liệu đào tạo hoặc chỉ đơn giản là giải đáp thắc mắc cá nhân.
Macro là một tập hợp các lệnh, hàm và thao tác được ghi lại hoặc viết bằng ngôn ngữ lập trình VBA. Khi chạy, macro thực hiện tự động các bước mà người dùng thường làm thủ công, giúp tiết kiệm thời gian và giảm thiểu lỗi.
1.2 Lợi ích của Macro
Tiết kiệm thời gian: Tự động hoá các quy trình lặp lại.
Độ chính xác cao: Giảm thiểu sai sót do nhập liệu thủ công.
Mở rộng tính năng: Thêm các chức năng không có sẵn trong Excel.
Tích hợp dữ liệu: Kết nối và xử lý dữ liệu từ nhiều nguồn khác nhau.
1.3 Các cấp độ bảo mật Macro
Excel cung cấp ba (hoặc bốn) mức độ bảo mật để bảo vệ người dùng khỏi macro độc hại: 1. Disable all macros without notification – Tắt mọi macro mà không hiển thị thông báo. 2. Disable all macros with notification – Vô hiệu hoá macro nhưng hiển thị thông báo để người dùng quyết định. 3. Disable all macros except digitally signed macros – Chỉ cho phép macro đã ký số. 4. Enable all macros (không khuyến khích) – Cho phép chạy mọi macro.
Việc hiểu rõ các mức độ này là chìa khóa giải quyết phần lớn lỗi “Excel cannot run the macro”.
Có thể bạn quan tâm: Excel Bị Mất Đường Lưới: Nguyên Nhân, Hậu Quả Và Cách Khắc Phục Nhanh Chóng
2. Nguyên nhân phổ biến gây ra lỗi “Excel cannot run the macro”
2.1 Cài đặt bảo mật macro không cho phép chạy
Mức độ bảo mật quá cao (Disable all macros without notification) khiến Excel tự động chặn mọi macro.
Chính sách nhóm (Group Policy) trong môi trường doanh nghiệp có thể ép buộc cài đặt bảo mật cao hơn.
2.2 Macro bị vô hiệu hoá trong Trust Center
Trust Center Settings > Macro Settings chưa được cấu hình đúng.
Trusted Locations không bao gồm thư mục chứa file .xlsm/.xlsb.
2.3 File macro bị hỏng hoặc không tương thích
File .xlsm được tạo trên phiên bản Excel cũ, chứa reference (tham chiếu) tới thư viện không tồn tại trong phiên bản hiện tại.
Corrupted VBA project do lưu trữ không đúng hoặc lỗi phần cứng.
2.4 Tên macro không hợp lệ hoặc không tồn tại
Gọi macro bằng tên sai (case-sensitive, dấu cách, ký tự đặc biệt).
Macro đã được xóa hoặc đổi tên trong trình chỉnh sửa VBA.
2.5 Lỗi trong mã VBA
Runtime error: lỗi khi thực thi (ví dụ: chia cho 0, truy cập đối tượng không tồn tại).
Macro được ký nhưng chứng chỉ đã hết hạn, được thu hồi, hoặc không tin cậy.
2.7 Các vấn đề liên quan tới 64-bit vs 32-bit
Sử dụng API calls hoặc thư viện COM không tương thích với kiến trúc Excel hiện tại.
2.8 Sự cố với Add‑ins và COM Add‑ins
Add‑in chứa macro bị disable hoặc conflict với các add‑in khác.
2.9 Quyền truy cập file và thư mục
File được lưu trên network drive có chính sách read‑only.
UAC (User Account Control) chặn quyền thực thi macro.
2.10 Sự cố phần mềm và cập nhật
Cập nhật Windows hoặc Office gây xung đột.
Cài đặt Office không đầy đủ (thiếu thành phần VBA).
3. Các bước chuẩn bị trước khi khắc phục
Xác định phiên bản Excel (File → Account → About Excel). Kiểm tra 32‑bit hay 64‑bit.
Kiểm tra mức độ bảo mật macro:
File → Options → Trust Center → Trust Center Settings → Macro Settings.
Kiểm tra Trust Center → Trusted Locations: Thêm thư mục chứa file nếu chưa có.
Sao lưu file: Tạo bản sao .xlsm trước khi thực hiện bất kỳ thay đổi nào.
Mở VBA Editor (Alt + F11) và biên dịch dự án (Debug → Compile VBAProject) để kiểm tra lỗi cú pháp.
4. Giải pháp chi tiết cho từng nguyên nhân
4.1 Cấu hình lại mức độ bảo mật macro
Bước 1: Vào File → Options → Trust Center → Trust Center Settings → Macro Settings. Bước 2: Chọn “Disable all macros with notification” (khuyến nghị) hoặc “Enable all macros” (chỉ dùng trong môi trường an toàn). Bước 3: Nhấn OK, đóng và mở lại file Excel. Khi xuất hiện Security Warning, chọn Enable Content.
Lưu ý: Trong môi trường doanh nghiệp, nếu bạn không có quyền thay đổi, hãy liên hệ với bộ phận IT để họ điều chỉnh Group Policy.
Trust Center → Trusted Locations → Add new location.
Chọn thư mục chứa file .xlsm (có thể là mạng nội bộ).
Đánh dấu “Subfolders of this location are also trusted” nếu cần.
Lưu và mở lại file.
4.3 Kiểm tra và sửa lỗi VBA
4.3.1 Biên dịch dự án
Mở VBA Editor (Alt + F11).
Chọn Debug → Compile VBAProject.
Nếu xuất hiện lỗi, đọc thông báo và sửa (ví dụ: khai báo biến, thêm reference).
4.3.2 Kiểm tra Reference (Tham chiếu)
Trong VBA Editor, vào Tools → References.
Đánh dấu Missing nếu có.
Bỏ chọn các mục bị mất hoặc tìm kiếm phiên bản mới (ví dụ: “Microsoft Office xx.0 Object Library”).
Nhấn OK và biên dịch lại.
4.3.3 Xử lý lỗi runtime
Thêm Error Handling vào macro: vba Sub MyMacro() On Error GoTo ErrHandler '--- Code here --- Exit Sub ErrHandler: MsgBox "Lỗi: " & Err.Description, vbCritical, "Macro Error" End Sub
Sử dụng Debug.Print hoặc MsgBox để kiểm tra giá trị biến.
4.4 Kiểm tra tên macro và cách gọi
Đảm bảo tên macro không chứa khoảng trắng, ký tự đặc biệt, và không trùng với tên hàm Excel.
Khi gọi macro từ Button hoặc Ribbon, kiểm tra Assign Macro để chọn đúng tên.
Nếu gọi từ Worksheet_Change hoặc Workbook_Open, chắc chắn rằng event được kích hoạt (Application.EnableEvents = True).
4.5 Xử lý vấn đề ký số (Digital Signature)
Kiểm tra chứng chỉ: File → Info → View Signatures.
Nếu chứng chỉ Expired hoặc Untrusted, bạn có thể:
Mở rộng thời gian bằng cách yêu cầu nhà cung cấp cấp chứng chỉ mới.
Xóa ký số: Vào VBA Editor, Project → Properties → Protection → Uncheck “Lock project for viewing”.
Cảnh báo: Xóa ký số có thể làm macro bị chặn nếu chính sách bảo mật yêu cầu ký số.
4.6 Giải quyết xung đột 32‑bit/64‑bit
Kiểm tra Declare statements trong VBA. Ví dụ: vba #If VBA7 Then Private Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long #Else Private Declare Function GetTickCount Lib "kernel32" () As Long #End If
Đảm bảo sử dụng PtrSafe cho 64‑bit. Nếu macro cũ không có, thêm điều kiện trên.
4.7 Kiểm tra Add‑ins và COM Add‑ins
File → Options → Add‑ins.
Ở dưới Manage, chọn Excel Add‑ins hoặc COM Add‑ins và nhấn Go.
Bỏ chọn các add‑in không cần thiết, khởi động lại Excel và thử lại macro.
4.8 Kiểm tra quyền truy cập file
Nếu file nằm trên network drive, kiểm tra Read/Write permission.
Đối với UAC, chạy Excel as Administrator (nhấp chuột phải → Run as administrator).
Đảm bảo không có antivirus chặn macro (cài đặt whitelist nếu cần).
4.9 Cập nhật và sửa chữa Office
Vào Control Panel → Programs → Programs and Features → Microsoft Office → Change → Quick Repair hoặc Online Repair.
Đảm bảo Microsoft Visual Basic for Applications được cài đặt (điều này có thể kiểm tra trong Add/Remove Features khi cài đặt Office).
5. Các kịch bản thực tế và cách khắc phục
5.1 Kịch bản 1: Macro không chạy trên máy mới, nhưng chạy tốt trên máy cũ
Nguyên nhân khả dĩ: Policy Group hoặc Trust Center trên máy mới có mức bảo mật cao hơn.
Giải pháp: 1. Kiểm tra Macro Settings và Trusted Locations trên máy mới. 2. Nếu không có quyền, yêu cầu IT thay đổi Group Policy (User Configuration → Administrative Templates → Microsoft Excel 2026 → Security → Macro Settings).
5.2 Kịch bản 2: Khi mở file, xuất hiện “Excel cannot run the macro” và macro không xuất hiện trong danh sách macro
Nguyên nhân: Project VBA bị locked (bảo vệ bằng password) hoặc corrupted.
Giải pháp: – Nếu có password, mở VBA Editor → Tools → VBAProject Properties → Protection → Uncheck “Lock project for viewing” và nhập password. – Nếu project bị hỏng, thử export all modules (File → Export File…) rồi import lại vào một workbook mới.
5.3 Kịch bản 3: Macro chạy được khi mở file trực tiếp, nhưng không chạy khi mở từ SharePoint/OneDrive
Nguyên nhân: SharePoint/OneDrive có Protected View và File Block Settings.
Giải pháp: – Tải file về máy cục bộ, mở và Enable Editing. – Hoặc cấu hình Trust Center → Trusted Locations để bao gồm URL SharePoint/OneDrive (có thể cần đăng ký URL vào Trusted Sites trong Internet Options).
5.4 Kịch bản 4: Macro được gán cho một button, khi click báo “cannot run the macro”
Nguyên nhân: Nút được gán sai macro hoặc macro đã đổi tên.
Giải pháp: 1. Nhấp chuột phải vào button → Assign Macro. 2. Chọn đúng macro trong danh sách. Nếu không xuất hiện, kiểm tra Public Sub trong module (phải là Public, không Private).
5.5 Kịch bản 5: Lỗi “cannot run the macro” chỉ xuất hiện khi chạy từ Workbook_Open event
Nguyên nhân: Khi mở workbook, macro chạy trước khi Trusted Locations được xác nhận, hoặc Enable Events bị tắt.
Giải pháp: – Thêm đoạn code vào ThisWorkbook: vba Private Sub Workbook_Open() Application.EnableEvents = True Call MyMacro End Sub – Đảm bảo Macro Settings cho phép chạy macro khi mở file.
6. Phòng ngừa lỗi “Excel cannot run the macro” trong tương lai
Chuẩn hoá môi trường làm việc: Thiết lập một chuẩn cho Trusted Locations và Macro Settings trong công ty.
Sử dụng digital signature hợp lệ và cập nhật thời hạn chứng chỉ thường xuyên.
Ghi chú và tài liệu hoá macro: Đặt tên rõ ràng, thêm comment trong code để dễ bảo trì.
Kiểm tra tương thích khi chuyển file giữa các phiên bản Excel (2007, 2026, 2026, 2026, 365).
Sao lưu định kỳ các file macro và lưu trữ ở vị trí an toàn.
Kiểm tra Reference sau mỗi lần cài đặt hoặc cập nhật Office.
Đào tạo người dùng về cách bật macro an toàn và nhận diện các cảnh báo bảo mật.
7. Tổng kết
Lỗi “Excel cannot run the macro” không phải là một hiện tượng ngẫu nhiên mà thường xuất phát từ cấu hình bảo mật, thiếu reference, lỗi trong mã VBA, hoặc vấn đề môi trường (64‑bit/32‑bit, quyền truy cập, policy). Bằng cách xác định nguyên nhân qua các bước chuẩn bị, kiểm tra cài đặt bảo mật, biên dịch và sửa lỗi VBA, cùng với các biện pháp phòng ngừa hợp lý, người dùng có thể nhanh chóng khắc phục và ngăn ngừa sự cố tái diễn.
Hy vọng bài viết này đã cung cấp cho bạn một cẩm nang toàn diện: từ việc nhận diện lỗi, phân loại nguyên nhân, thực hiện các bước khắc phục chi tiết, cho tới lời khuyên phòng ngừa. Khi gặp phải thông báo “Excel cannot run the macro”, hãy nhớ rằng mỗi bước kiểm tra đều có thể là chìa khóa mở ra giải pháp. Chỉ cần kiên nhẫn, tuân thủ quy trình, và luôn giữ một bản sao lưu an toàn, bạn sẽ luôn giữ được năng suất làm việc và sự tin cậy vào các macro trong Excel.
Chúc bạn thành công! Nếu còn thắc mắc hoặc muốn chia sẻ kinh nghiệm, đừng ngần ngại để lại bình luận hoặc liên hệ với nhóm hỗ trợ IT của công ty bạn.
Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
⚠️
LƯU Ý QUAN TRỌNG:Miễn trừ trách nhiệm: Mặc dù chúng tôi luôn nỗ lực để đảm bảo tính chính xác và cập nhật của thông tin, nhưng các quy định về giáo dục và tuyển sinh có thể thay đổi theo thời gian. BigSchool không chịu trách nhiệm về bất kỳ sai sót nào hoặc kết quả phát sinh từ việc sử dụng thông tin trên trang này. Độc giả nên liên hệ trực tiếp với nhà trường hoặc cơ quan chức năng để có thông tin mới nhất. Ngoài ra, BigSchool tuyệt đối không bán sản phẩm, khóa học hay cung cấp dịch vụ được nhắc đến trong bài.