Có một tình huống khá “ức chế” mà dân dùng Excel 2010 VBA hay gặp: bạn tạo file có nút bấm, form đẹp đẽ, chạy Macro ngon lành trên máy mình… nhưng khi gửi cho người khác, mở lên thì lỗi.
Không phải lỗi nhẹ đâu nhé. Có khi nút không bấm được, có khi hiện thông báo liên quan đến ActiveX, thậm chí văng lỗi luôn.
Lúc đó kiểu gì bạn cũng thắc mắc:
“Ủa, file mình làm có vấn đề gì à?”
Thật ra, chưa chắc đâu. Rất có thể vấn đề nằm ở… 32-bit và 64-bit.
1. ActiveX là gì mà gây rắc rối vậy?
Nói đơn giản thôi nhé.
ActiveX là một dạng control (điều khiển) dùng trong Excel:
- Nút bấm (Command Button)
- Checkbox
- TextBox
- ComboBox
Những thứ bạn hay dùng để tạo giao diện tương tác trong file Excel.
Nghe rất quen đúng không?
Nhưng có một vấn đề:
👉 ActiveX phụ thuộc vào hệ thống
👉 Và đặc biệt là phụ thuộc vào phiên bản 32-bit hay 64-bit
2. 32-bit vs 64-bit – khác nhau chỗ nào?
Đây là “gốc rễ” của vấn đề.
Office 2010 có 2 phiên bản:
- 32-bit
- 64-bit
Và chúng… không hoàn toàn tương thích với nhau.
Ví dụ:
- File tạo trên Office 32-bit
- Mở trên Office 64-bit
👉 Có thể lỗi ActiveX
Vì sao?
👉 Một số thư viện, control chỉ hoạt động ở 32-bit
👉 Khi sang 64-bit, VBA không nhận ra
Nói kiểu dễ hiểu:
👉 Bạn đang nói tiếng “32-bit”
👉 Máy kia chỉ hiểu “64-bit”
Thế là… lệch sóng 😄.
3. Dấu hiệu nhận biết lỗi ActiveX
Không phải lúc nào cũng báo rõ “32-bit/64-bit”, nhưng bạn có thể nhận ra qua các dấu hiệu:
👉 Nút bấm không hoạt động
👉 Form không hiển thị
👉 Lỗi khi mở file liên quan đến ActiveX
👉 VBA báo lỗi khi gọi control
Đôi khi còn gặp lỗi kiểu:
👉 “Object library invalid”
👉 “Could not load object”
Nghe hơi “khó hiểu”, nhưng thực chất vẫn quay về vấn đề tương thích.
4. Nguyên nhân chính – không chỉ mỗi 32/64-bit
Nhiều người nghĩ chỉ do khác bit, nhưng thật ra còn vài lý do khác:
❌ Thiếu thư viện ActiveX
👉 Máy nhận file không có control đó
❌ File .exd bị lỗi
👉 Đây là file cache của ActiveX
❌ Office chưa cập nhật
👉 Một số lỗi ActiveX từng xảy ra do update
❌ Quyền bảo mật
👉 ActiveX bị chặn trong Trust Center
5. Cách sửa lỗi ActiveX 32-bit/64-bit trong Office 2010
Đây là phần quan trọng nhất.
Cách 1: Xóa file .exd
Nghe lạ nhưng rất hiệu quả.
👉 Tìm file .exd trong:
%temp%- Thư mục Excel
👉 Xóa đi
👉 Mở lại Excel
Rất nhiều trường hợp chỉ cần vậy là hết lỗi.
Cách 2: Kiểm tra lại phiên bản Office
👉 Máy A dùng 32-bit
👉 Máy B dùng 64-bit
✔ Giải pháp:
- Đồng bộ phiên bản
- Hoặc chỉnh code phù hợp
Cách 3: Dùng Conditional Compilation
Nếu bạn viết VBA nâng cao:
‘ Code cho 64-bit
#Else
‘ Code cho 32-bit
#End If
Cách này giúp code chạy trên cả hai hệ.
Cách 4: Thay ActiveX bằng Form Controls
👉 Nếu không cần quá phức tạp
✔ Dùng Form Control thay thế
Nó ít lỗi hơn, tương thích tốt hơn.
6. Một vài mẹo để tránh lỗi ngay từ đầu
Không ai thích sửa lỗi cả 😄.
👉 Hạn chế dùng ActiveX nếu không cần
👉 Test file trên nhiều máy
👉 Tránh phụ thuộc thư viện lạ
👉 Luôn backup file
Một mẹo nhỏ mà rất hữu ích:
👉 Nếu làm file gửi nhiều người
→ Ưu tiên dùng Form Controls
Ít đẹp hơn chút, nhưng ổn định hơn rất nhiều.
7. Một chút trải nghiệm thực tế
Nói thật nhé.
Lỗi ActiveX là một trong những lỗi “khó chịu” nhất khi làm VBA. Không phải vì nó khó sửa, mà vì nó… không ổn định.
Có lúc:
- Máy này chạy bình thường
- Máy kia lỗi
Khiến bạn tưởng code sai, nhưng thật ra không phải.
Chính vì vậy, hiểu được vấn đề 32-bit và 64-bit là cực kỳ quan trọng.
Kết lại – hiểu bản chất là xử lý được
Lỗi ActiveX trong Office 2010 không phải là thứ gì quá “đáng sợ”. Nó chỉ là vấn đề tương thích.
Khi bạn hiểu:
- ActiveX là gì
- Sự khác nhau giữa 32-bit và 64-bit
- Cách xử lý
Thì mọi thứ trở nên đơn giản hơn rất nhiều.
Và quan trọng nhất:
👉 Đừng hoảng khi gặp lỗi
👉 Hãy nghĩ: “Chắc lại lệch bit rồi” 😄

