Khắc phục lỗi biên dịch VBA 64bit: “The code in this project must be updated for use on 64-bit systems”

Nếu bạn từng làm việc với VBA, có thể bạn sẽ gặp tình trạng: Lỗi biên dịch VBA 64bit. Đây là lỗi xuất hiện khi ứng dụng có sử dụng mã VBA chuyển từ môi trường làm việc 32bits sang 64bits. Vậy làm thế nào để khắc phục lỗi “The code in this project must be updated for use on 64-bit systems”.

Lỗi biên dịch VBA trong phiên bản 64bit là gì?

Khi bạn sử dụng code VBA cho các ứng dụng Excel hoặc Access. Theo lối viết code trước đây, các khai báo sử dụng thư viện DLL là 32bit. Tuy vậy, các điều khiển ActiveX và COM, DLL được viết cho Office 32-bit sẽ không hoạt động trong 64-bit.

Ví dụ như đoạn khai báo dưới đây:

Private Declare Function MessageBoxIndirectW Lib "user32" (lpMsgBoxParams As MsgBoxParams) As Long

Và khi bạn thực thi đoạn mã trên, sẽ xuất hiện lỗi như sau:

Lỗi biên dịch mã VBA trong phiên bản 64 bit

Gỡ lỗi “The code in this project must be updated for use on 64-bit systems” như thế nào?

Tại các đoạn code khai báo, chỉ cần thêm vào thuộc tính PtrSafe là xử lý được lỗi nêu trên. Cụ thể, ví dụ bạn có đoạn code dưới đây:

Private Declare Function MessageBoxIndirectW Lib "user32" (lpMsgBoxParams As MsgBoxParams) As Long

Bạn sửa lại bằng cách thêm PrtSafe như sau:

Private Declare PtrSafe Function MessageBoxIndirectW Lib "user32" (lpMsgBoxParams As MsgBoxParams) As Long

Đến đây bạn lưu lại, và thực thi đoạn mã vừa rồi. Đảm bảo không xảy ra lỗi biên dịch 64bit nữa nhé.

Chúc các bạn thành công.