View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Dutch Gemini[_2_] Dutch Gemini[_2_] is offline
external usenet poster
 
Posts: 6
Default Removing Add-ins programmatically from Excel 2003 using VBScript

This happens installing and uninstalling Add-In in Excel via VBA/vbscript:

Installing:
======
1) When you add an Add-In via VBA/VBScript using 'Application.AddIns.Add
<file, CopyFile := True' and the source file is on a local drive, the Add-In
is linked to Excel but not copied.

2) When you add an Add-In via VBA/VBScript using 'Application.AddIns.Add
<file, CopyFile := True' and the source file is *NOT* on a local drive, the
Add-In is linked to Excel after being copied to the
'%AppData%\Microsoft\AddIns' folder

In both cases you end up with an entry called "OPEN" (evt. followed by a
number) under "HKCU\Software\Microsoft\Office\<Version\Excel\Op tions" that
contains:
a) the full path for 1)
b) only the name of the file for 2)

Uninstalling:
======
The only way to uninstall via VBA/VBScript is using
'Application.AddIns(<ref).Installed = False'. However, the file remains
'visible' to Excel.

1) If the source file was *NOT* copied, the Add-In entry "OPEN" under
"HKCU\Software\Microsoft\Office\<Version\Excel\Op tions" is removed and
another one is created under
"HKCU\Software\Microsoft\Office\<Version\Excel\Ad d-in Manager" but having,
as a registry value, the full name of the file (for instance "C:\My
Folder\MyAddIn.xla")

2) If the source file was copied to the 'AppData' folder, the Add-In entry
"OPEN" under "HKCU\Software\Microsoft\Office\<Version\Excel\Op tions" is
removed. *NO* extra entry is created under
"HKCU\Software\Microsoft\Office\<Version\Excel\Ad d-in Manager"

Removing the Add-In
======
1) The file needs to be 'unRegistered'. Since 'Wscript.Shell' object cannot
handle the backslash '\' character, the only way to remove it is by using WMI
statements

Const HKEY_CURRENT_USER = &H80000001
ExcelRegistryKey = "Software\Microsoft\Office\<Version\Excel\Add-in Manager"
Set WmiRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")
Result = WmiRegistry.DeleteValue(HKEY_CURRENT_USER, ExcelRegistryKey, "C:\My
Folder\MyAddIn.xla")

The file does not have to be removed physically. Excel will not find it
anymore.

2) The file must be physically removed from the 'AppData' folder; this can
be done with the '.DeleteFile' method of a 'FileSystemObject'.

Hope this helps