Tại sao cùng FIle,cùng code VBA mà ở máy này chạy đúng,máy kia chạy sai. (2 người xem)

Người dùng đang xem chủ đề này

DMQ

Thành viên dốt
Tham gia
21/3/12
Bài viết
739
Được thích
61
Giới tính
Nam
Em có vấn đề hỏi anh chị, em có file có code VBA nhờ các anh chị làm ở máy nhà, thì chạy OK, nhưng đem file đó đưa lên máy Cty thì chạy sai. Không biết có ai bị vậy không??
 
]Gemini]
Lỗi code VBA chạy bình thường ở máy nhà nhưng bị sai hoặc lỗi (Error) khi mang lên máy công ty là một vấn đề rất phổ biến. Hiện tượng này thường do sự khác biệt về môi trường hệ thống, phiên bản phần mềm hoặc cài đặt bảo mật giữa hai máy.
Dưới đây là các nguyên nhân phổ biến nhất và cách xử lý nhanh:

1. Thiếu thư viện liên kết (Missing References)​

  • Nguyên nhân: Code ở nhà của bạn có sử dụng một số thư viện bổ sung (vídụ: Microsoft Outlook, Microsoft Scripting Runtime, Solver...) mà máy công ty chưa kích hoạt hoặc có phiên bản khác.
  • Cách khắc phục:
    1. Tại máy công ty, mở file Excel, nhấn Alt + F11 để vào cửa sổ VBA.
    2. Chọn Tools > References.
    3. Tìm xem có dòng nào hiển thị chữ "MISSING: ..." hay không. Nếu có, hãy bỏ tích chọn nó, tìm đúng thư viện đó ở phiên bản hiện tại của máy công ty và tích chọn lại.

2. Khác biệt phiên bản Office (32-bit và 64-bit)​

  • Nguyên nhân: Nếu code của bạn có sử dụng các hàm API hệ thống (khai báo bằng từ khóa Declare Sub...), nó sẽ bị lỗi nếu máy nhà dùng Office 32-bit còn máy công ty dùng Office 64-bit (hoặc ngược lại).
  • Cách khắc phục:Cập nhật lại đoạn khai báo API bằng cách sử dụng thuộc tính định hướng PtrSafe để tương thích với bản 64-bit.
    • Ví dụ: Chuyển Declare Sub ... thành Declare PtrSafe Sub ... (và đổi kiểu dữ liệu biến liên quan thành LongPtr).

3. Định dạng Ngày tháng (Regional Date Settings)​

  • Nguyên nhân: Máy nhà cấu hình ngày tháng kiểu Ngày/Tháng/Năm (DD/MM/YYYY), còn máy công ty cấu hình kiểu Tháng/Ngày/Năm (MM/DD/YYYY). Khi VBA xử lý chuỗi ngày tháng sẽ sinh ra kết quả sai hoặc lỗi.
  • Cách khắc phục:
    • Sử dụng hàm DateSerial(Year, Month, Day) trong VBA thay vì truyền chuỗi dạng "05/09/2026".
    • Hoặc kiểm tra lại Regional Settings trong Control Panel của cả 2 máy để đồng bộ.

4. Cài đặt bảo mật Macro ở Công ty bị chặn​

  • Nguyên nhân: Chính sách bảo mật (IT Policy) của công ty chặn không cho chạy Macro hoặc chặn các kết nối dữ liệu từ bên ngoài (nếu code có lấy dữ liệu từ Web/SQL).
  • Cách khắc phục:
    1. Vào File > Options > Trust Center > Trust Center Settings.
    2. Tại mục Macro Settings, chọn Disable VBA macros with notification (để Excel hiển thị nút "Enable Content" khi mở file).
    3. Tại mục Trusted Locations, thêm thư mục chứa file của bạn vào danh sách tin cậy.

5. Khác biệt về Tên Sheet hoặc Đường dẫn File (Path)​

  • Nguyên nhân: Nếu code VBA cố định (Hardcode) một đường dẫn thư mục (với tên User máy nhà) hoặc gọi tên một Sheet/File cụ thể mà máy công ty không có hoặc viết khác ký tự (Hoa/Thường/Dấu tiếng Việt).
  • Cách khắc phục: Sử dụng các đường dẫn động như ThisWorkbook.Path thay vì viết cố định C:\Users\Admin\Desktop\...

Để em có thể bắt bệnh chính xác nhất cho anh/chị, hãy chụp ảnh màn hình dòng code bị báo lỗi màu vàng (nếu có) hoặc gửi đoạn code VBA đang bị chạy sai lên đây kèm theo thông tin:
  • Máy báo lỗi gì (mã lỗi, thông báo lỗi)?
  • Nó chạy ra kết quả sai ở đoạn nào?
 

Bài viết mới nhất

Back
Top Bottom