2009-07-15 7 views
3

アドイン(.xla)をMicrosoft Excel(私の場合は2007)にインストールするMSIインストーラを作成しようとしています。インストールは順調です。私は、CustomActionDataプロパティを使用してスクリプトにアドインの場所を渡すVBScriptを使用してExcelアドインをアンインストールする

Dim SourceDir 
Dim objExcel 
Dim objAddin 

SourceDir = Session.Property("CustomActionData") 
Set objExcel = CreateObject("Excel.Application") 
objExcel.Workbooks.Add 
Set objAddin = objExcel.AddIns.Add(SourceDir & "addin.xla", True) 
objAddin.Installed = True 
objExcel.Quit 
Set objExcel = Nothing 

:私はこのVBScriptファイルを実行する「カスタムアクション」を使用しています。 Add-inは、 'Program Files'内のフォルダにコピーされ、アンインストールされるまでそのまま残ります。これは、インストーラ自体によって処理されます。

Dim objExcel 
Dim addin 
On Error Resume Next 

Set objExcel = CreateObject("Excel.Application") 
For i = 0 To objExcel.Addins.Count 
    Set objAddin= objExcel.Addins.item(i) 
    If objAddin.Name = "addin.xla" Then 
     objAddin.Installed = False 
    End If 
Next 

objExcel.Quit 
Set objExcel = Nothing 

アドインをu [インストールExcelでカスタムツールバーを作成します。私は、アンインストールスクリプトを使用する場合

問題

です。アンインストール時にツールバーは削除されず、Excelの設定の[アドイン]セクションにあるアドインのエントリも表示されません。

これらの2つのことをVBScriptを使用してプログラムで行うことができますか?ほとんどVB(A)中のすべてのコレクションは、1基づいて予め

答えて

2

おかげ。あなたのループはゼロから行くので、それはAddIns(0)にアクセスしようとすると失敗します。それはあなたがOn Error Resume Nextを持っているという事実によって隠されています。

また、ツールバーを明示的に削除する必要があります。単にアドインを削除してもそれは行いません。

私は私はあなたがそれをやっている方法のように言うことはできませんが、それは

+0

アドインは、現在「非アクティブに移動され:-)時間の少なくとも50%を動作するはずですアプリケーションアドイン 'セクションを参照してください。助けになる。 – pancake

0
For Each Key in Keys 
    objReg.EnumKey HKEY_CURRENT_USER,strRegPath & "\" & Key,xlKeys 
    For Each xlKey in xlKeys 
     if(LCase(xlKey) = "excel") Then 
      objReg.EnumKey HKEY_CURRENT_USER,strRegPath & "\" & Key & "\" & xlKey,subKeys 

      If(Not ISNULL(subKeys)) Then 
           For Each subKey in subKeys 
        If(lcase(subKey) = "options") Then   'Find Options subKey 
         objReg.EnumValues HKEY_CURRENT_USER, strRegPath & "\" & Key & "\" & xlKey & "\" & subKey, Values 
         If (Not IsNull(Values)) Then 
            For Each oValue In Values 
           If (LCase(Left(oValue, 4))="open") Then 
            objReg.GetStringValue HKEY_CURRENT_USER, strRegPath & "\" & Key & "\" & xlKey & "\" & subKey & "\", oValue, sTempValue 
            If(Not XLAddinRemove(sTempValue)) Then 

                       If(aOpenKeyVals(0)<>"") Then 
              Redim Preserve aOpenKeyVals(UBound(aOpenKeyVals)+1) 
             End If 
             aOpenKeyVals(UBound(aOpenKeyVals))=sTempValue 
                     End If 
            objReg.DeleteValue HKEY_CURRENT_USER, strRegPath & "\" & Key & "\" & xlKey & "\" & subKey, oValue 
           End If 
          Next 
          For iOLoop = 0 To UBound(aOpenKeyVals) 
           If(iOLoop>0) Then sOpenName = "OPEN" & iOLoop 
           If aOpenKeyVals(iOLoop) <> "" Then 
                    objReg.SetStringValue HKEY_CURRENT_USER, strRegPath & "\" & Key & "\" & xlKey & "\" & subKey, sOpenName, aOpenKeyVals(iOLoop) 
                   End If 
          Next 

          sOpenName="OPEN" 
          Redim aOpenKeyVals (0) 
          aOpenKeyVals (0)="" 
         End If 
        End If 
       Next 
      End If 
      End If 
    Next 
Next 
関連する問題