2009-05-13 24 views
5

Tôi cần có khả năng phát hiện phiên bản Excel nào tôi đã cài đặt trong máy của mình từ một số mã .NET mà tôi đang phát triển. Tôi hiện đang sử dụng Application.Version cho điều đó, nhưng nó không cung cấp cho tôi thông tin về Gói Dịch vụ.Phát hiện Phiên bản Excel đã Cài đặt (và Gói Dịch vụ)

tôi sẽ ưu tiên để chỉ đạo ra khỏi một cái gì đó như thế này: http://www.mvps.org/access/api/api0065.htm

Quản lý mã hoan nghênh!

Trả lời

6
Public Shared Function GetExcelVersion() As Integer 
    Dim excel As Object = Nothing 
    Dim ver As Integer = 0 
    Dim build As Integer 
    Try 
     excel = CreateObject("Excel.Application") 
     ver = excel.Version 
     build = excel.Build 
    Catch ex As Exception 
     'Continue to finally sttmt 
    Finally 
     Try 
      Marshal.ReleaseComObject(excel) 
     Catch 
     End Try 
     GC.Collect() 
    End Try 
    Return ver 
End Function 

Returns 0 nếu không tìm thấy excel.

+0

gì nếu tôi muốn mở phiên bản excel nào đó từ mã giống nhau không? –

+0

Ý của bạn là gì? – Shimmy

+0

Bạn trả lời đã cho tôi thông tin tôi muốn +1. Tuy nhiên, tôi phải chỉ ra rằng excel.Version là một chuỗi; ví dụ: "11.0" hoặc "15.0". –

2

Thật không may, cách tiếp cận đó là cách tiếp cận đáng tin cậy duy nhất. Ngay cả Microsoft suggests using a similar technique (đây là để kiểm tra bằng tay, nhưng khái niệm này là giống hệt nhau).

Nếu bạn muốn thực hiện điều này trong mã được quản lý, tôi khuyên bạn chỉ nên chuyển mã từ liên kết của bạn và tạo lớp dễ mở rộng khi gói dịch vụ mới được phát hành.

0

Trong khi không mạnh mẽ, cách tiếp cận đó là cách duy nhất tôi biết.

Hãy nhớ rằng bạn không phải kiểm tra kết quả trùng khớp chính xác. Bạn có thể sử dụng so sánh trên các giá trị riêng lẻ để xem liệu phiên bản bạn có chẳng hạn, SP1 hoặc mới hơn. bạn biết đó là mới nếu số phiên bản lớn hơn hoặc bằng "11.0.6355.0" (bạn sẽ cần phải thực hiện việc so sánh)

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