2016-09-09 5 views
1

は、私は現在のコンテキストからそのアドイン内のスクリプトを呼び出す前に、必要なアドインが利用可能/インストールされているかどうかを確認するために、次のコードを持っている:エクセルVBAチェック

Function IsAddinEnabled(addinName as string) As Boolean 
    IsAddinEnabled = True 
    Dim myAddin As addin 
    On Error GoTo NotExists 
    Set myAddin = Application.AddIns2(addinName) 
    If myAddin.IsOpen = False Then ' this logic is my workaround 
     myAddin.Installed = False 'uninstall 
     myAddin.Installed = True ' install to "Open" the addin 
    Else 
     myAddin.Installed = True 'redundant 
    End If 
    Exit Function 
NotExists: 
    IsAddinEnabled = False 
End Function 

問題は場合に発生します:

myAddin.IsOpen = falseアドインを再インストールするためにこのロジックを追加する必要がありました。 addinをアンインストールして再インストールするのは少し面倒です。 Addinを強制的に再インストールせずに「開く」ように強制する方法はありますか?

答えて

0

パー@Charlesウィリアムズ

を(アドインコレクションを気にする必要はありません):

Function IsAddinEnabled(addinName as string) As Boolean 
    IsAddinEnabled = True 
    Dim myAddin As addin 
    On Error GoTo NotExists 
    Set myAddin = Application.AddIns2(addinName) 
    If myAddin.IsOpen = False Then ' this logic is my workaround 
     Workbooks.Open myAddin.Path & "\" & myAddin.Name 'open the addin, if it's not open 
    Else 
     myAddin.Installed = True 'redundant 
    End If 
    Exit Function 
NotExists: 
    IsAddinEnabled = False 
End Function 
1

簡単な方法は、ブックがワークブックコレクションに存在するかどうかを確認することです。

パスを知っていることを前提としたブックのように開くことはできません。

これは私が使用した方法である

+0

が、私は両方の方法を使用することができ、その後、 'workbooks.open myAddin.Path'を使用してください – GisMofx