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
|