Tự động thay đổi tham chiếu đến thư viện VBA (Microsoft Excel)
Mark đang ở trong môi trường làm việc sử dụng hai phiên bản Excel? 2002 và 2003. Một vấn đề nảy sinh khi anh ta mở một sổ làm việc có macro trong Excel 2003, cài đặt thư viện VB của Office 11 và sau đó ai đó cố gắng mở cùng một sổ làm việc trong Excel 2002, xuất hiện lỗi khi macro cố gắng chạy vì nó không thể tìm thấy tham chiếu thư viện VBA chính xác. Mark biết anh ấy có thể sửa lỗi này theo cách thủ công bằng cách đi tới trình soạn thảo VB và xóa tham chiếu đến thư viện VBA bị thiếu, nhưng anh ấy tự hỏi liệu có cách nào để sổ làm việc tự động kiểm tra phiên bản Excel và cập nhật tham chiếu thư viện VBA cho phù hợp hay không.
Một cách để giải quyết vấn đề này là tạo và lưu sổ làm việc bằng phiên bản Excel cũ hơn. Khi nó được mở trong phiên bản Excel mới hơn, tham chiếu đến thư viện VBA sẽ được tự động cập nhật.
Excel thực hiện các bản cập nhật cho các phiên bản mới hơn, nhưng nó sẽ không chuyển sang các phiên bản cũ hơn.
Tuy nhiên, điều này có nghĩa là ngay cả khi sổ làm việc được tạo trong phiên bản Excel trước, khi nó được mở và sau đó được lưu trong phiên bản Excel mới hơn, người dùng phiên bản cũ hơn sẽ gặp sự cố khi mở nó.
Giải pháp, theo một số nguồn, là sử dụng những gì được gọi là? Ràng buộc muộn.? Điều này đơn giản có nghĩa là macro được viết để nó chỉ tra cứu các chức năng cụ thể trong thời gian chạy, không phải khi macro được lưu. Điều này được tham khảo một chút trong bài viết cơ sở kiến thức Microsoft sau:
http://support.microsoft.com/?kbid=244167
Bạn có thể thử các kỹ thuật liên kết muộn bằng cách mở trình chỉnh sửa VBA và xóa mọi tham chiếu đã được thiết lập trước đó. Sau đó, thêm mã tương tự như sau vào gần đầu macro của bạn:
If Application.Version = "10.0" Then 'Excel 2002 Dim oExcel As Object 'Apply late binding Set oExcel = CreateObject("Excel.Application") End If If Application.Version = "11.0" Then 'Excel 2003 ' ' Add whatever references you want for Excel 2003 ' End If
Ở cuối macro, hãy đảm bảo rằng bạn đặt mọi đối tượng đã xác định (chẳng hạn như oExcel) thành Không có gì. Bạn có thể tìm thấy một ví dụ điển hình về mã mạnh hơn những gì được trình bày ở đây trong các bài viết sau:
http://www.vbaexpress.com/kb/getarticle.php?kb_id=267 http://www.vbaexpress.com/kb/getarticle.php?kb_id=272
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (3340) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.