2009-05-13 8 views
5

開発中の.NETコードから、自分のマシンにインストールされているExcelのバージョンを検出できるようにする必要があります。私は現在Application.Versionを使っていますが、サービスパックに関する情報は私には伝えません。私は、好ましくは、このような何かから離れて操縦するでしょうインストールされているExcelバージョン(およびサービスパック)の検出

http://www.mvps.org/access/api/api0065.htm

マネージコード歓迎!

答えて

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 

戻り値0以上であれば、それは新しいことを知っています。

+0

何を参照してください? –

+0

どういう意味ですか? – Shimmy

+0

あなたは私が欲しかった情報を私に与えました+1。しかし、私はexcel.Versionが文字列であることを指摘しなければなりません。たとえば「11.0」または「15.0」などです。 –

2

残念ながら、このアプローチは唯一の信頼できるアプローチです。 Microsoft suggests using a similar technique(これは手動でチェックするためのものですが、コンセプトは同じです)。

これを管理コードで実行したい場合は、リンクからコードを移植し、新しいサービスパックがリリースされたときに簡単に拡張できるクラスを作成することをおすすめします。

0

堅牢ではありませんが、そのアプローチが私が知る唯一の方法です。

完全一致を確認する必要はありません。個々の値の比較を使用して、使用しているバージョンがSP1以上であるかどうかを確認できます。あなたが見つかりませんEXCEL場合は、バージョン番号が「11.0.6355.0」(あなたは比較を実装する必要があります)

2

あなたはexeファイルへのパスをレジストリ内のアプリのパスをチェックして、そのバージョンを得ることができます: 私は同じコードから特定のExcelのバージョンを開くしたい場合http://www.codeproject.com/KB/office/getting_office_version.aspx

+0

非常にいいです!私はそれを使用するつもりです! –

関連する問題