1

インストール時に他のアドインを追加するアドインを作成しました。1 つのアドインをデプロイする方が、多数のアドインをデプロイするよりも簡単だからです。

問題: Bootloader-Addin の後End SubWorkbook_AddinInstall()、追加/インストールされたばかりのアドインが VBE から消え、インストールされなくなります。ただし、それらはまだアドイン メニューに追加されています。

質問:すべてのアドインを手動ですべての PC にインストールできます。数が多いわけではないからです。この問題を解決するためにあなたの心に浮かぶすべてのアイデアに感謝します.

ブートローダー アドイン:

Private Sub Workbook_AddinInstall()
    Const aiCount As Integer = 2
    Dim ai      As AddIn
    Dim aiTmp   As AddIn

    Dim i       As Integer
    Dim aiPath  As String

    Dim aiToBeInstalled(1 To aiCount) As String
    Dim aiInstalled(1 To aiCount)     As Boolean

    aiToBeInstalled(1) = "AddIn1.xla"
    aiToBeInstalled(2) = "AddIn2.xla"

    'AddIn added?
    For Each ai In AddIns
        For i = 1 To aiCount
            If ai.name = aiToBeInstalled(i) Then
                Set aiTmp = ai
                aiTmp.Installed = True
                aiInstalled(i) = True
                Exit For
            End If
        Next i
    Next ai

    'Add not already added AddIns
    For i = 1 To aiCount
        If Not aiInstalled(i) Then
            aiPath = GetDrivePath(volName:="somevolname", excludeDrives:="D") & _
                                "hidden\" & aiToBeInstalled(i)
            Set ai = AddIns.Add(aiPath, False)
            ai.Installed = True
        End If
    Next i

    Set ai = Nothing
    Set aiTmp = Nothing
End Sub ' After "End Sub" the addins are still added but not installed.

興味深い こと ブートローダーのインストール後、この Sub を ごとに実行するF5と、Sub はアドインを正常に追加します。そして、期待どおりに動作します。

編集:Workbook_AddinInstallインストールされているアドインには 重要なものはなく、メニューにいくつかの変更が加えられているだけです。それを見て、これは本当に私を混乱させます。アドインが に関連付けられていないかのように動作するため、残りApplicationません。

結論:これは私ができる限りのことですが、何かアイデアがあれば教えてください。私は現在回避策に取り組んでいますが、なぜこれが機能しないのか本当に知りたいです。

4

1 に答える 1

0

現在のワークブック プロジェクトの VB エディターを介してアドインをインストールする必要があります。.Install() メソッドは、新しい GUID を (COM オブジェクト ライブラリとして) レジストリに登録しますが、ブック参照は保持しません。

'//Start Code Snippet 

'--!!-->   This will add the reference to the workbook (on each computer). 
    '-->    if the reference is not already registered it (will/should) take 
    '-->    care of it for you..

Application.VBE.ActiveVBProject.References.AddFromFile :YOUR_FILE_PATH_HERE


'//End Code Snippet 

明らかに、:YOUR_FILE_PATH_HEREをアドインの場所のパスに置き換えます...それが役立つかどうか教えてください。そうでない場合は、さらにいくつかのトリックがあります。ありがとう、ブライアン。

于 2013-09-03T21:55:41.207 に答える