Nếu tôi có bảng tính mà tôi đã tham chiếu Thư viện đối tượng MS Outlook 14.0 từ trình soạn thảo VBA và người dùng chỉ cài đặt MS Outlook 12.0 thì khi người dùng đó mở bảng tính, họ sẽ gặp lỗi biên dịch trên dòng này:Ngăn ngừa lỗi biên dịch Excel VBA do người dùng có phiên bản MS Office cũ hơn (MS Outlook) được cài đặt?
Range("export_date") = Date - 1
Nếu họ đi vào Tools, tài liệu tham khảo, trong danh sách tài liệu tham khảo, có lỗi này:
MISSING: MS Outlook 14.0 Object Library
Nếu họ bỏ chọn thư viện mà, và thay vào đó chọn
MS Outlook 12.0 Object Library
... mã sau đó biên dịch chính xác và bảng tính hoạt động tốt cho chúng.
Tôi không thực sự hiểu tại sao nó không thành công trên hàm Date(), vì đó là hàm VBA, không phải là hàm Outlook. Nhưng quan trọng hơn, có cách nào để tránh tình trạng này không? Điều duy nhất tôi có thể nghĩ đến là không đặt tham chiếu và chỉ sử dụng các biến kiểu Object và khởi tạo qua CreateObject ("Outlook.Application"), v.v ... nhưng tôi ghét từ bỏ việc nhập mạnh, v.v.
Có thể bất cứ ai đề nghị một cách vượt trội để xử lý vấn đề này tương thích ngược với các phiên bản cũ của MS Office?
Chết tiệt, câu trả lời của bạn là điều tôi sợ sẽ xảy ra. "... trước khi bạn phân phối ứng dụng của mình, hãy thay đổi mã thành Latebinding". - Nói dễ hơn là xong !!!! :) Sử dụng một thư viện kiểu cũ sẽ là thích hợp hơn nếu một người đã làm rất nhiều điều này, nhưng đối với trường hợp của tôi, tôi sẽ chỉ sử dụng Binding sớm tôi đoán. – tbone
@tbone: tin tôi đi. Nó rất dễ dàng để chuyển đổi một ràng buộc sớm đến một ràng buộc muộn :) –
@tbone trong khi bạn cou \ ld cố gắng thêm tài liệu tham khảo cho các phiên bản khác nhau trong thời gian chạy, tôi sẽ đi với lời khuyên của Sid về điều này. +1 – brettdj