2009-06-20 18 views
5

Tôi có thể sử dụng truy cập VBA 2007 với khả năng miễn dịch (đặc biệt, theo ngôn ngữ cơ sở và giao diện com cũ có liên quan) để phát triển các giải pháp dựa trên VBA để truy cập vào năm 2003 không?Có sự khác biệt nào trong các phiên bản VBA giữa văn phòng 2003 và 2007 không?

Hoặc có một số cú pháp mới/sửa đổi được thêm vào ngôn ngữ mà tôi cần phải biết không?

Mô hình đối tượng có được cải thiện đáng kể trong văn phòng 2007 không?

Bất kỳ cảnh báo nào khác?

Cảm ơn bạn.

Trả lời

8

Bản thân ngôn ngữ VBA đã không bị thay đổi giữa các phiên bản Microsoft Office gần đây (và có lẽ cũng sẽ không thay đổi trong tương lai). Phiên bản VBA từ Access2000 trở đi là VBA6.

Mô hình đối tượng của các ứng dụng Office tuy nhiên được sửa đổi nhẹ. Microsoft thường chỉ mở rộng OM bằng các phương thức và thuộc tính bổ sung. Theo như truy cập là có liên quan, tôi không thể cung cấp cho bạn bất kỳ chi tiết nhưng bạn sẽ tìm thấy một danh sách các thay đổi ở đây:

Trong nói chung, các giải pháp VBA được phát triển dựa trên phiên bản Office nhất định sẽ hoạt động với phiên bản mới hơn. Ma quỷ nằm trong các chi tiết mặc dù. Do sửa lỗi và các tính năng mới, ứng dụng có thể hoạt động nhẹ khác với phiên bản cũ hơn. Cách duy nhất để tìm hiểu xem mọi thứ vẫn hoạt động là thử nghiệm toàn diện.

+0

+1 Cảm ơn :) Các liên kết này thực sự hữu ích. –

0

Nếu bạn đang biên dịch accdb/mdb thành accde/mde, bạn muốn đảm bảo bạn biên dịch chúng trong cùng phiên bản với ứng dụng chính của bạn. Tôi đã gặp một số rắc rối khi sử dụng Access 2003 MDE's với Access 2007 (và rõ ràng là ngược lại).

2

Có một số đặc tính mới, phương pháp và đối tượng trong Excel 2007.

Tuy nhiên, hầu hết các chương trình trong Excel 2003 hoạt động tốt trong Excel 2007

Có vài thứ từ VBA Excel 2003 mà không hoạt động tại Excel 2007.

Tôi đã tìm thấy 4 vấn đề.

  • "Chart.Add" cho lỗi tự động trong Excel 2007 khi có nhiều hơn 1 ô đã chọn

  • Lỗi không thiết lập lại bằng chính nó, nó là cần thiết sử dụng Err.clear trước lệnh mà có thể được phát hành một lỗi.

     On Error Resume Next 
         Intruction_That_Could_be_buggy_1 
         if Err.Number <>0 Then 
          Err.Clear  ' <<<<==== This command is necessary 
          Intruction_That_Could_be_buggy_2     
          if Err.Number <>0 Then 
            .... 
    
  • Phạm vi (...).Dán (xlFormulas) bây giờ dừng lại khi tồn tại một mâu thuẫn tên có thể, đó là cần thiết để sử dụng

    Application.displayalerts = False 
        Range(....).Paste(xlFormulas) 
        Application.displayalerts = True 
    
  • Một số phím tắt như Alt + N được dành riêng trong Excel 2007. Application.Onkey ("% n", "rotina ") không hoạt động trong trường hợp đó. Bây giờ, có nhiều phím tắt ribbon theo kiểu ALT + Letra. Tôi không thể tìm thấy bất kỳ cách nào để ngăn chặn hành vi này. Thay vào đó, nó sẽ được sử dụng phím nóng khác.

+0

Um, đáng yêu như câu trả lời của bạn, tôi không thấy câu hỏi này có liên quan gì đến Excel. –

+0

Bạn nói đúng, tôi có một chút suy nghĩ. Tuy nhiên, những gì happpens với Excel 2007 liên quan đến Excel 2003 liên quan đến VBA nên lặp lại trong việc triển khai VBA khác. Trong Word 2007 hoặc Outlook 2007, tôi không tìm thấy bất kỳ vấn đề nào (cho đến bây giờ), nhưng việc sử dụng của tôi kém mãnh liệt –

+0

Tôi sẽ không chắc chắn rằng giới hạn VBA trong Word/Excel/Outlook cũng áp dụng cho Access. –

Các vấn đề liên quan