Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default remove add-in entry via registry

Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't find any
good example of this.
Thanks for any assistance.

RBS

  #2   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,253
Default remove add-in entry via registry

Bart...

This was written in VB6 and compiled into a small exe
it will install or uninstall addins based on commandline paramters

AND will do it for all versions of excel on the PC.
Have a look and take what you need.

Cheerz!



Option Explicit
Option Compare Text

Const sFILE = "MyAddinV1.xla"
Const sMASK = "*MyAddin*"
Const sAPPL = "My Application"
Const sVBAREGAPP = "My Application"
Const sVBAREGKEY = "Settings"

'KERNEL32
Private Declare Function GetLocaleInfo Lib "kernel32" Alias
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal
lpLCData As String, ByVal cchData As Long) As Long
'USER32
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'ADVAPI32
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As
Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal
Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult
As Long) As Long


Private Declare Function RegEnumValue Lib "advapi32.dll" Alias
"RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal
lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long,
lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As
Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As
Long

Sub Main()
Dim bUndo As Boolean
Dim sFull$, lRet&, lErr&

'Read command line parameters
'Usage: /i or /u
On Error GoTo TheEnd
If InStr(Command$, "/i") 0 Then
bUndo = False
ElseIf InStr(Command$, "/u") 0 Then
bUndo = True
Else
Select Case MsgBox("Register & Activate " & sAPPL & "addin?" &
vbNewLine & "Yes=Install, No=Uninstall", vbYesNoCancel)
Case vbCancel
Exit Sub
Case vbNo
bUndo = True
End Select
End If

sFull = App.Path & "\" & sFILE
'Verify files (only needed for Install?)
If Dir(sFull) = "" And Not bUndo Then
lRet = 1
Else
While Excel_IsOpen
If vbCancel = MsgBox("Close Excel, then press OK.",
vbOKCancel) Then Exit Sub
DoEvents
Wend
lRet = Install_Addin(bUndo, sFull, sMASK)
End If

TheEnd:
On Error Resume Next
Select Case lRet
Case True
If bUndo Then
MsgBox sAPPL & " removed from registry"
Else
MsgBox sAPPL & " addin registered & activated"
End If
Case 1: MsgBox "error: File not found " & sFull
Case 2: MsgBox "error: Registry permissions"
Case Else: MsgBox "unspecified error"
End Select

End Sub

Private Function Install_Addin(ByVal bUndo As Boolean, ByVal sFull$,
ByVal sMASK$) As Long
Const HKCU& = &H80000001
Const HKMS$ = "Software\Microsoft\Office"

Const KEY_ALL_ACCESS = &H2003F
Const ERROR_NO_MORE_ITEMS = &H103
Const BUFFER_SIZE = 256

Dim sKey As String 'name of hive
Dim hKey As Long 'long pointer to hive
Dim lName As Long 'long pointer to SName
Dim lData As Long 'long pointer to sData

Dim sName As String 'Text for Name column in Registry
Dim sData As String 'Text for Data column in Registry

Dim vVers As Variant
Dim vOpen As Variant

Dim lCtr As Long
Dim lErr As Long
Dim lRet As Long
Dim bDone As Boolean

Dim cInst As Collection 'collection of installed excel versions
Dim cOpen As Collection 'collection of activated addins

'Init collections
Set cInst = New Collection
Set cOpen = New Collection

'Check if the office key exists and if we've got enough permissions
lRet = RegOpenKeyEx(HKCU, HKMS, 0&, KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
lErr = 1
GoTo errH
Else
RegCloseKey hKey
End If

'Loop possible versions
For Each vVers In Array("11.0", "10.0", "9.0", "8.0")

'Find installed addins
sKey = HKMS & "\" & vVers & "\Excel"
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS, hKey)

If lRet < 0 Then
'ok.. this version is not installed
Else
cInst.Add vVers
'Get the key to the addins
RegCloseKey hKey
lRet = RegOpenKeyEx(HKCU, sKey & "\Add-in Manager", 0&,
KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
'get parent
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS,
hKey)
'create the key
lRet = RegCreateKey(hKey, "Add-in Manager", hKey)
Else
'enumerate installed
bDone = False
lCtr = 0

Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0,
ByVal 0&, ByVal sData, lData)
If lRet = 0 Then
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData -
1, 0))
If sName Like sMASK Then
If StrComp(sName, sFull, vbTextCompare)
= 0 Then
If bUndo Then
RegDeleteValue hKey, sName
Else
bDone = True
End If
Else
RegDeleteValue hKey, sName
End If
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet < 0
End If

If hKey < 0 And Not (bDone Or bUndo) Then
sName = sFull
sData = vbNullString
RegSetValueEx hKey, sName, 0, 1, ByVal sData, Len(sData)
End If

RegCloseKey hKey

'----------------------------
'now do the opened addins
sKey = HKMS & "\" & vVers & "\Excel" & IIf(vVers = "8.0",
"\Microsoft Excel", "\Options")
lRet = RegOpenKeyEx(HKCU, sKey, 0, KEY_ALL_ACCESS, hKey)
If lRet = 0 Then
'init
Set cOpen = New Collection

'enumerate activated
lCtr = 0
Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0&,
ByVal 0&, ByVal sData, lData)
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData - 1,
0))
If sName Like "open*" Then
'kill it
RegDeleteValue hKey, sName
'save it if non-synk
If Not sData Like sMASK Then
cOpen.Add sData
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet = ERROR_NO_MORE_ITEMS

lCtr = 0
'(Re)write all items
If Not bUndo Then cOpen.Add """" & sFull & """"

For Each vOpen In cOpen
sName = "OPEN" & IIf(lCtr = 0, "", lCtr)
sData = vOpen
lRet = RegSetValueEx(hKey, sName, 0, 1&, ByVal
sData, Len(sData))
lCtr = lCtr + 1
Next
End If
RegCloseKey hKey

End If
Next

'CleanUp "VBA" settings
If bUndo Then
If Not IsEmpty(GetAllSettings(sVBAREGAPP, sVBAREGKEY)) Then
DeleteSetting sVBAREGAPP, sVBAREGKEY
End If
If cInst.Count 0 Then Install_Addin = True

endh:
If hKey < 0 Then RegCloseKey hKey
Exit Function

bufInit:
'initialize buffers
sName = Space(BUFFER_SIZE)
sData = Space(BUFFER_SIZE)
lName = BUFFER_SIZE
lData = BUFFER_SIZE
Return


errH:
Install_Addin = lErr
GoTo endh
End Function

Private Function Excel_IsOpen() As Boolean
Excel_IsOpen = (FindWindow("XLMAIN", vbNullString) < 0)
End Function
Private Function System_Language() As String
Dim sData$, lData& '&H400=user/&H800=system
'when you use the SYSTEM locale you get the language
'of the installed windows version not the language the user has
selected in regional settings
sData = Space(256)
lData = GetLocaleInfo(&H800, &H1001, sData, Len(sData))
If lData 0 Then System_Language = Left$(sData, lData - 1)
End Function








keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"RB Smissaert" wrote:

Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't
find any good example of this.
Thanks for any assistance.

RBS



  #3   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 837
Default remove add-in entry via registry

http://groups.google.com/groups?thre...922D8%40gmx.at

Jerry

RB Smissaert wrote:

Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't find
any
good example of this.
Thanks for any assistance.

RBS


  #4   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default remove add-in entry via registry

Thanks for the quick reply.
Will study both and see what I can use.

RBS


"RB Smissaert" wrote in message
...
Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't find
any
good example of this.
Thanks for any assistance.

RBS


  #5   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default remove add-in entry via registry

keepITcool,

Think I got this now largely worked out.
There is just one bit that won't work with Excel and that is the keyword
Return in the bufInit section
of the function Install_Addin.
Would this translate to Exit Function?

RBS


"keepITcool" wrote in message
...
Bart...

This was written in VB6 and compiled into a small exe
it will install or uninstall addins based on commandline paramters

AND will do it for all versions of excel on the PC.
Have a look and take what you need.

Cheerz!



Option Explicit
Option Compare Text

Const sFILE = "MyAddinV1.xla"
Const sMASK = "*MyAddin*"
Const sAPPL = "My Application"
Const sVBAREGAPP = "My Application"
Const sVBAREGKEY = "Settings"

'KERNEL32
Private Declare Function GetLocaleInfo Lib "kernel32" Alias
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal
lpLCData As String, ByVal cchData As Long) As Long
'USER32
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'ADVAPI32
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As
Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal
Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult
As Long) As Long


Private Declare Function RegEnumValue Lib "advapi32.dll" Alias
"RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal
lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long,
lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As
Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As
Long

Sub Main()
Dim bUndo As Boolean
Dim sFull$, lRet&, lErr&

'Read command line parameters
'Usage: /i or /u
On Error GoTo TheEnd
If InStr(Command$, "/i") 0 Then
bUndo = False
ElseIf InStr(Command$, "/u") 0 Then
bUndo = True
Else
Select Case MsgBox("Register & Activate " & sAPPL & "addin?" &
vbNewLine & "Yes=Install, No=Uninstall", vbYesNoCancel)
Case vbCancel
Exit Sub
Case vbNo
bUndo = True
End Select
End If

sFull = App.Path & "\" & sFILE
'Verify files (only needed for Install?)
If Dir(sFull) = "" And Not bUndo Then
lRet = 1
Else
While Excel_IsOpen
If vbCancel = MsgBox("Close Excel, then press OK.",
vbOKCancel) Then Exit Sub
DoEvents
Wend
lRet = Install_Addin(bUndo, sFull, sMASK)
End If

TheEnd:
On Error Resume Next
Select Case lRet
Case True
If bUndo Then
MsgBox sAPPL & " removed from registry"
Else
MsgBox sAPPL & " addin registered & activated"
End If
Case 1: MsgBox "error: File not found " & sFull
Case 2: MsgBox "error: Registry permissions"
Case Else: MsgBox "unspecified error"
End Select

End Sub

Private Function Install_Addin(ByVal bUndo As Boolean, ByVal sFull$,
ByVal sMASK$) As Long
Const HKCU& = &H80000001
Const HKMS$ = "Software\Microsoft\Office"

Const KEY_ALL_ACCESS = &H2003F
Const ERROR_NO_MORE_ITEMS = &H103
Const BUFFER_SIZE = 256

Dim sKey As String 'name of hive
Dim hKey As Long 'long pointer to hive
Dim lName As Long 'long pointer to SName
Dim lData As Long 'long pointer to sData

Dim sName As String 'Text for Name column in Registry
Dim sData As String 'Text for Data column in Registry

Dim vVers As Variant
Dim vOpen As Variant

Dim lCtr As Long
Dim lErr As Long
Dim lRet As Long
Dim bDone As Boolean

Dim cInst As Collection 'collection of installed excel versions
Dim cOpen As Collection 'collection of activated addins

'Init collections
Set cInst = New Collection
Set cOpen = New Collection

'Check if the office key exists and if we've got enough permissions
lRet = RegOpenKeyEx(HKCU, HKMS, 0&, KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
lErr = 1
GoTo errH
Else
RegCloseKey hKey
End If

'Loop possible versions
For Each vVers In Array("11.0", "10.0", "9.0", "8.0")

'Find installed addins
sKey = HKMS & "\" & vVers & "\Excel"
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS, hKey)

If lRet < 0 Then
'ok.. this version is not installed
Else
cInst.Add vVers
'Get the key to the addins
RegCloseKey hKey
lRet = RegOpenKeyEx(HKCU, sKey & "\Add-in Manager", 0&,
KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
'get parent
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS,
hKey)
'create the key
lRet = RegCreateKey(hKey, "Add-in Manager", hKey)
Else
'enumerate installed
bDone = False
lCtr = 0

Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0,
ByVal 0&, ByVal sData, lData)
If lRet = 0 Then
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData -
1, 0))
If sName Like sMASK Then
If StrComp(sName, sFull, vbTextCompare)
= 0 Then
If bUndo Then
RegDeleteValue hKey, sName
Else
bDone = True
End If
Else
RegDeleteValue hKey, sName
End If
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet < 0
End If

If hKey < 0 And Not (bDone Or bUndo) Then
sName = sFull
sData = vbNullString
RegSetValueEx hKey, sName, 0, 1, ByVal sData, Len(sData)
End If

RegCloseKey hKey

'----------------------------
'now do the opened addins
sKey = HKMS & "\" & vVers & "\Excel" & IIf(vVers = "8.0",
"\Microsoft Excel", "\Options")
lRet = RegOpenKeyEx(HKCU, sKey, 0, KEY_ALL_ACCESS, hKey)
If lRet = 0 Then
'init
Set cOpen = New Collection

'enumerate activated
lCtr = 0
Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0&,
ByVal 0&, ByVal sData, lData)
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData - 1,
0))
If sName Like "open*" Then
'kill it
RegDeleteValue hKey, sName
'save it if non-synk
If Not sData Like sMASK Then
cOpen.Add sData
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet = ERROR_NO_MORE_ITEMS

lCtr = 0
'(Re)write all items
If Not bUndo Then cOpen.Add """" & sFull & """"

For Each vOpen In cOpen
sName = "OPEN" & IIf(lCtr = 0, "", lCtr)
sData = vOpen
lRet = RegSetValueEx(hKey, sName, 0, 1&, ByVal
sData, Len(sData))
lCtr = lCtr + 1
Next
End If
RegCloseKey hKey

End If
Next

'CleanUp "VBA" settings
If bUndo Then
If Not IsEmpty(GetAllSettings(sVBAREGAPP, sVBAREGKEY)) Then
DeleteSetting sVBAREGAPP, sVBAREGKEY
End If
If cInst.Count 0 Then Install_Addin = True

endh:
If hKey < 0 Then RegCloseKey hKey
Exit Function

bufInit:
'initialize buffers
sName = Space(BUFFER_SIZE)
sData = Space(BUFFER_SIZE)
lName = BUFFER_SIZE
lData = BUFFER_SIZE
Return


errH:
Install_Addin = lErr
GoTo endh
End Function

Private Function Excel_IsOpen() As Boolean
Excel_IsOpen = (FindWindow("XLMAIN", vbNullString) < 0)
End Function
Private Function System_Language() As String
Dim sData$, lData& '&H400=user/&H800=system
'when you use the SYSTEM locale you get the language
'of the installed windows version not the language the user has
selected in regional settings
sData = Space(256)
lData = GetLocaleInfo(&H800, &H1001, sData, Len(sData))
If lData 0 Then System_Language = Left$(sData, lData - 1)
End Function








keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"RB Smissaert" wrote:

Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't
find any good example of this.
Thanks for any assistance.

RBS






  #6   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default remove add-in entry via registry

keepITcool,

Ignore this question.
Found this out now.

RBS


"RB Smissaert" wrote in message
...
keepITcool,

Think I got this now largely worked out.
There is just one bit that won't work with Excel and that is the keyword
Return in the bufInit section
of the function Install_Addin.
Would this translate to Exit Function?

RBS


"keepITcool" wrote in message
...
Bart...

This was written in VB6 and compiled into a small exe
it will install or uninstall addins based on commandline paramters

AND will do it for all versions of excel on the PC.
Have a look and take what you need.

Cheerz!



Option Explicit
Option Compare Text

Const sFILE = "MyAddinV1.xla"
Const sMASK = "*MyAddin*"
Const sAPPL = "My Application"
Const sVBAREGAPP = "My Application"
Const sVBAREGKEY = "Settings"

'KERNEL32
Private Declare Function GetLocaleInfo Lib "kernel32" Alias
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal
lpLCData As String, ByVal cchData As Long) As Long
'USER32
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'ADVAPI32
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As
Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal
Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult
As Long) As Long


Private Declare Function RegEnumValue Lib "advapi32.dll" Alias
"RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal
lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long,
lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As
Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As
Long

Sub Main()
Dim bUndo As Boolean
Dim sFull$, lRet&, lErr&

'Read command line parameters
'Usage: /i or /u
On Error GoTo TheEnd
If InStr(Command$, "/i") 0 Then
bUndo = False
ElseIf InStr(Command$, "/u") 0 Then
bUndo = True
Else
Select Case MsgBox("Register & Activate " & sAPPL & "addin?" &
vbNewLine & "Yes=Install, No=Uninstall", vbYesNoCancel)
Case vbCancel
Exit Sub
Case vbNo
bUndo = True
End Select
End If

sFull = App.Path & "\" & sFILE
'Verify files (only needed for Install?)
If Dir(sFull) = "" And Not bUndo Then
lRet = 1
Else
While Excel_IsOpen
If vbCancel = MsgBox("Close Excel, then press OK.",
vbOKCancel) Then Exit Sub
DoEvents
Wend
lRet = Install_Addin(bUndo, sFull, sMASK)
End If

TheEnd:
On Error Resume Next
Select Case lRet
Case True
If bUndo Then
MsgBox sAPPL & " removed from registry"
Else
MsgBox sAPPL & " addin registered & activated"
End If
Case 1: MsgBox "error: File not found " & sFull
Case 2: MsgBox "error: Registry permissions"
Case Else: MsgBox "unspecified error"
End Select

End Sub

Private Function Install_Addin(ByVal bUndo As Boolean, ByVal sFull$,
ByVal sMASK$) As Long
Const HKCU& = &H80000001
Const HKMS$ = "Software\Microsoft\Office"

Const KEY_ALL_ACCESS = &H2003F
Const ERROR_NO_MORE_ITEMS = &H103
Const BUFFER_SIZE = 256

Dim sKey As String 'name of hive
Dim hKey As Long 'long pointer to hive
Dim lName As Long 'long pointer to SName
Dim lData As Long 'long pointer to sData

Dim sName As String 'Text for Name column in Registry
Dim sData As String 'Text for Data column in Registry

Dim vVers As Variant
Dim vOpen As Variant

Dim lCtr As Long
Dim lErr As Long
Dim lRet As Long
Dim bDone As Boolean

Dim cInst As Collection 'collection of installed excel versions
Dim cOpen As Collection 'collection of activated addins

'Init collections
Set cInst = New Collection
Set cOpen = New Collection

'Check if the office key exists and if we've got enough permissions
lRet = RegOpenKeyEx(HKCU, HKMS, 0&, KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
lErr = 1
GoTo errH
Else
RegCloseKey hKey
End If

'Loop possible versions
For Each vVers In Array("11.0", "10.0", "9.0", "8.0")

'Find installed addins
sKey = HKMS & "\" & vVers & "\Excel"
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS, hKey)

If lRet < 0 Then
'ok.. this version is not installed
Else
cInst.Add vVers
'Get the key to the addins
RegCloseKey hKey
lRet = RegOpenKeyEx(HKCU, sKey & "\Add-in Manager", 0&,
KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
'get parent
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS,
hKey)
'create the key
lRet = RegCreateKey(hKey, "Add-in Manager", hKey)
Else
'enumerate installed
bDone = False
lCtr = 0

Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0,
ByVal 0&, ByVal sData, lData)
If lRet = 0 Then
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData -
1, 0))
If sName Like sMASK Then
If StrComp(sName, sFull, vbTextCompare)
= 0 Then
If bUndo Then
RegDeleteValue hKey, sName
Else
bDone = True
End If
Else
RegDeleteValue hKey, sName
End If
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet < 0
End If

If hKey < 0 And Not (bDone Or bUndo) Then
sName = sFull
sData = vbNullString
RegSetValueEx hKey, sName, 0, 1, ByVal sData, Len(sData)
End If

RegCloseKey hKey

'----------------------------
'now do the opened addins
sKey = HKMS & "\" & vVers & "\Excel" & IIf(vVers = "8.0",
"\Microsoft Excel", "\Options")
lRet = RegOpenKeyEx(HKCU, sKey, 0, KEY_ALL_ACCESS, hKey)
If lRet = 0 Then
'init
Set cOpen = New Collection

'enumerate activated
lCtr = 0
Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0&,
ByVal 0&, ByVal sData, lData)
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData - 1,
0))
If sName Like "open*" Then
'kill it
RegDeleteValue hKey, sName
'save it if non-synk
If Not sData Like sMASK Then
cOpen.Add sData
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet = ERROR_NO_MORE_ITEMS

lCtr = 0
'(Re)write all items
If Not bUndo Then cOpen.Add """" & sFull & """"

For Each vOpen In cOpen
sName = "OPEN" & IIf(lCtr = 0, "", lCtr)
sData = vOpen
lRet = RegSetValueEx(hKey, sName, 0, 1&, ByVal
sData, Len(sData))
lCtr = lCtr + 1
Next
End If
RegCloseKey hKey

End If
Next

'CleanUp "VBA" settings
If bUndo Then
If Not IsEmpty(GetAllSettings(sVBAREGAPP, sVBAREGKEY)) Then
DeleteSetting sVBAREGAPP, sVBAREGKEY
End If
If cInst.Count 0 Then Install_Addin = True

endh:
If hKey < 0 Then RegCloseKey hKey
Exit Function

bufInit:
'initialize buffers
sName = Space(BUFFER_SIZE)
sData = Space(BUFFER_SIZE)
lName = BUFFER_SIZE
lData = BUFFER_SIZE
Return


errH:
Install_Addin = lErr
GoTo endh
End Function

Private Function Excel_IsOpen() As Boolean
Excel_IsOpen = (FindWindow("XLMAIN", vbNullString) < 0)
End Function
Private Function System_Language() As String
Dim sData$, lData& '&H400=user/&H800=system
'when you use the SYSTEM locale you get the language
'of the installed windows version not the language the user has
selected in regional settings
sData = Space(256)
lData = GetLocaleInfo(&H800, &H1001, sData, Len(sData))
If lData 0 Then System_Language = Left$(sData, lData - 1)
End Function








keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"RB Smissaert" wrote:

Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't
find any good example of this.
Thanks for any assistance.

RBS





  #7   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 863
Default remove add-in entry via registry

Yes, they haven't removed Gosub and Return.

On Sat, 16 Oct 2004 15:37:51 +0100, "RB Smissaert"
wrote:

keepITcool,

Ignore this question.
Found this out now.

RBS


"RB Smissaert" wrote in message
...
keepITcool,

Think I got this now largely worked out.
There is just one bit that won't work with Excel and that is the keyword
Return in the bufInit section
of the function Install_Addin.
Would this translate to Exit Function?

RBS


"keepITcool" wrote in message
...
Bart...

This was written in VB6 and compiled into a small exe
it will install or uninstall addins based on commandline paramters

AND will do it for all versions of excel on the PC.
Have a look and take what you need.

Cheerz!



Option Explicit
Option Compare Text

Const sFILE = "MyAddinV1.xla"
Const sMASK = "*MyAddin*"
Const sAPPL = "My Application"
Const sVBAREGAPP = "My Application"
Const sVBAREGKEY = "Settings"

'KERNEL32
Private Declare Function GetLocaleInfo Lib "kernel32" Alias
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal
lpLCData As String, ByVal cchData As Long) As Long
'USER32
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'ADVAPI32
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As
Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal
Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult
As Long) As Long


Private Declare Function RegEnumValue Lib "advapi32.dll" Alias
"RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal
lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long,
lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As
Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As
Long

Sub Main()
Dim bUndo As Boolean
Dim sFull$, lRet&, lErr&

'Read command line parameters
'Usage: /i or /u
On Error GoTo TheEnd
If InStr(Command$, "/i") 0 Then
bUndo = False
ElseIf InStr(Command$, "/u") 0 Then
bUndo = True
Else
Select Case MsgBox("Register & Activate " & sAPPL & "addin?" &
vbNewLine & "Yes=Install, No=Uninstall", vbYesNoCancel)
Case vbCancel
Exit Sub
Case vbNo
bUndo = True
End Select
End If

sFull = App.Path & "\" & sFILE
'Verify files (only needed for Install?)
If Dir(sFull) = "" And Not bUndo Then
lRet = 1
Else
While Excel_IsOpen
If vbCancel = MsgBox("Close Excel, then press OK.",
vbOKCancel) Then Exit Sub
DoEvents
Wend
lRet = Install_Addin(bUndo, sFull, sMASK)
End If

TheEnd:
On Error Resume Next
Select Case lRet
Case True
If bUndo Then
MsgBox sAPPL & " removed from registry"
Else
MsgBox sAPPL & " addin registered & activated"
End If
Case 1: MsgBox "error: File not found " & sFull
Case 2: MsgBox "error: Registry permissions"
Case Else: MsgBox "unspecified error"
End Select

End Sub

Private Function Install_Addin(ByVal bUndo As Boolean, ByVal sFull$,
ByVal sMASK$) As Long
Const HKCU& = &H80000001
Const HKMS$ = "Software\Microsoft\Office"

Const KEY_ALL_ACCESS = &H2003F
Const ERROR_NO_MORE_ITEMS = &H103
Const BUFFER_SIZE = 256

Dim sKey As String 'name of hive
Dim hKey As Long 'long pointer to hive
Dim lName As Long 'long pointer to SName
Dim lData As Long 'long pointer to sData

Dim sName As String 'Text for Name column in Registry
Dim sData As String 'Text for Data column in Registry

Dim vVers As Variant
Dim vOpen As Variant

Dim lCtr As Long
Dim lErr As Long
Dim lRet As Long
Dim bDone As Boolean

Dim cInst As Collection 'collection of installed excel versions
Dim cOpen As Collection 'collection of activated addins

'Init collections
Set cInst = New Collection
Set cOpen = New Collection

'Check if the office key exists and if we've got enough permissions
lRet = RegOpenKeyEx(HKCU, HKMS, 0&, KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
lErr = 1
GoTo errH
Else
RegCloseKey hKey
End If

'Loop possible versions
For Each vVers In Array("11.0", "10.0", "9.0", "8.0")

'Find installed addins
sKey = HKMS & "\" & vVers & "\Excel"
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS, hKey)

If lRet < 0 Then
'ok.. this version is not installed
Else
cInst.Add vVers
'Get the key to the addins
RegCloseKey hKey
lRet = RegOpenKeyEx(HKCU, sKey & "\Add-in Manager", 0&,
KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
'get parent
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS,
hKey)
'create the key
lRet = RegCreateKey(hKey, "Add-in Manager", hKey)
Else
'enumerate installed
bDone = False
lCtr = 0

Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0,
ByVal 0&, ByVal sData, lData)
If lRet = 0 Then
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData -
1, 0))
If sName Like sMASK Then
If StrComp(sName, sFull, vbTextCompare)
= 0 Then
If bUndo Then
RegDeleteValue hKey, sName
Else
bDone = True
End If
Else
RegDeleteValue hKey, sName
End If
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet < 0
End If

If hKey < 0 And Not (bDone Or bUndo) Then
sName = sFull
sData = vbNullString
RegSetValueEx hKey, sName, 0, 1, ByVal sData, Len(sData)
End If

RegCloseKey hKey

'----------------------------
'now do the opened addins
sKey = HKMS & "\" & vVers & "\Excel" & IIf(vVers = "8.0",
"\Microsoft Excel", "\Options")
lRet = RegOpenKeyEx(HKCU, sKey, 0, KEY_ALL_ACCESS, hKey)
If lRet = 0 Then
'init
Set cOpen = New Collection

'enumerate activated
lCtr = 0
Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0&,
ByVal 0&, ByVal sData, lData)
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData - 1,
0))
If sName Like "open*" Then
'kill it
RegDeleteValue hKey, sName
'save it if non-synk
If Not sData Like sMASK Then
cOpen.Add sData
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet = ERROR_NO_MORE_ITEMS

lCtr = 0
'(Re)write all items
If Not bUndo Then cOpen.Add """" & sFull & """"

For Each vOpen In cOpen
sName = "OPEN" & IIf(lCtr = 0, "", lCtr)
sData = vOpen
lRet = RegSetValueEx(hKey, sName, 0, 1&, ByVal
sData, Len(sData))
lCtr = lCtr + 1
Next
End If
RegCloseKey hKey

End If
Next

'CleanUp "VBA" settings
If bUndo Then
If Not IsEmpty(GetAllSettings(sVBAREGAPP, sVBAREGKEY)) Then
DeleteSetting sVBAREGAPP, sVBAREGKEY
End If
If cInst.Count 0 Then Install_Addin = True

endh:
If hKey < 0 Then RegCloseKey hKey
Exit Function

bufInit:
'initialize buffers
sName = Space(BUFFER_SIZE)
sData = Space(BUFFER_SIZE)
lName = BUFFER_SIZE
lData = BUFFER_SIZE
Return


errH:
Install_Addin = lErr
GoTo endh
End Function

Private Function Excel_IsOpen() As Boolean
Excel_IsOpen = (FindWindow("XLMAIN", vbNullString) < 0)
End Function
Private Function System_Language() As String
Dim sData$, lData& '&H400=user/&H800=system
'when you use the SYSTEM locale you get the language
'of the installed windows version not the language the user has
selected in regional settings
sData = Space(256)
lData = GetLocaleInfo(&H800, &H1001, sData, Len(sData))
If lData 0 Then System_Language = Left$(sData, lData - 1)
End Function








keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"RB Smissaert" wrote:

Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't
find any good example of this.
Thanks for any assistance.

RBS





  #8   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 2,452
Default remove add-in entry via registry

It is a confusing construction.
Return didn't show in the help, but GoSub did.

RBS

"Myrna Larson" wrote in message
...
Yes, they haven't removed Gosub and Return.

On Sat, 16 Oct 2004 15:37:51 +0100, "RB Smissaert"
wrote:

keepITcool,

Ignore this question.
Found this out now.

RBS


"RB Smissaert" wrote in message
.. .
keepITcool,

Think I got this now largely worked out.
There is just one bit that won't work with Excel and that is the keyword
Return in the bufInit section
of the function Install_Addin.
Would this translate to Exit Function?

RBS


"keepITcool" wrote in message
...
Bart...

This was written in VB6 and compiled into a small exe
it will install or uninstall addins based on commandline paramters

AND will do it for all versions of excel on the PC.
Have a look and take what you need.

Cheerz!



Option Explicit
Option Compare Text

Const sFILE = "MyAddinV1.xla"
Const sMASK = "*MyAddin*"
Const sAPPL = "My Application"
Const sVBAREGAPP = "My Application"
Const sVBAREGKEY = "Settings"

'KERNEL32
Private Declare Function GetLocaleInfo Lib "kernel32" Alias
"GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal
lpLCData As String, ByVal cchData As Long) As Long
'USER32
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA"
(ByVal lpClassName As String, ByVal lpWindowName As String) As Long
'ADVAPI32
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As
Long) As Long
Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias
"RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal
Reserved As Long, ByVal samDesired As Long, phkResult As Long) As Long
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias
"RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String,
phkResult
As Long) As Long


Private Declare Function RegEnumValue Lib "advapi32.dll" Alias
"RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal
lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long,
lpType As Long, lpData As Any, lpcbData As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias
"RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String,
ByVal
Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As
Long) As Long
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias
"RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As
Long

Sub Main()
Dim bUndo As Boolean
Dim sFull$, lRet&, lErr&

'Read command line parameters
'Usage: /i or /u
On Error GoTo TheEnd
If InStr(Command$, "/i") 0 Then
bUndo = False
ElseIf InStr(Command$, "/u") 0 Then
bUndo = True
Else
Select Case MsgBox("Register & Activate " & sAPPL & "addin?" &
vbNewLine & "Yes=Install, No=Uninstall", vbYesNoCancel)
Case vbCancel
Exit Sub
Case vbNo
bUndo = True
End Select
End If

sFull = App.Path & "\" & sFILE
'Verify files (only needed for Install?)
If Dir(sFull) = "" And Not bUndo Then
lRet = 1
Else
While Excel_IsOpen
If vbCancel = MsgBox("Close Excel, then press OK.",
vbOKCancel) Then Exit Sub
DoEvents
Wend
lRet = Install_Addin(bUndo, sFull, sMASK)
End If

TheEnd:
On Error Resume Next
Select Case lRet
Case True
If bUndo Then
MsgBox sAPPL & " removed from registry"
Else
MsgBox sAPPL & " addin registered & activated"
End If
Case 1: MsgBox "error: File not found " & sFull
Case 2: MsgBox "error: Registry permissions"
Case Else: MsgBox "unspecified error"
End Select

End Sub

Private Function Install_Addin(ByVal bUndo As Boolean, ByVal sFull$,
ByVal sMASK$) As Long
Const HKCU& = &H80000001
Const HKMS$ = "Software\Microsoft\Office"

Const KEY_ALL_ACCESS = &H2003F
Const ERROR_NO_MORE_ITEMS = &H103
Const BUFFER_SIZE = 256

Dim sKey As String 'name of hive
Dim hKey As Long 'long pointer to hive
Dim lName As Long 'long pointer to SName
Dim lData As Long 'long pointer to sData

Dim sName As String 'Text for Name column in Registry
Dim sData As String 'Text for Data column in Registry

Dim vVers As Variant
Dim vOpen As Variant

Dim lCtr As Long
Dim lErr As Long
Dim lRet As Long
Dim bDone As Boolean

Dim cInst As Collection 'collection of installed excel versions
Dim cOpen As Collection 'collection of activated addins

'Init collections
Set cInst = New Collection
Set cOpen = New Collection

'Check if the office key exists and if we've got enough permissions
lRet = RegOpenKeyEx(HKCU, HKMS, 0&, KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
lErr = 1
GoTo errH
Else
RegCloseKey hKey
End If

'Loop possible versions
For Each vVers In Array("11.0", "10.0", "9.0", "8.0")

'Find installed addins
sKey = HKMS & "\" & vVers & "\Excel"
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS, hKey)

If lRet < 0 Then
'ok.. this version is not installed
Else
cInst.Add vVers
'Get the key to the addins
RegCloseKey hKey
lRet = RegOpenKeyEx(HKCU, sKey & "\Add-in Manager", 0&,
KEY_ALL_ACCESS, hKey)
If lRet < 0 Then
'get parent
lRet = RegOpenKeyEx(HKCU, sKey, 0&, KEY_ALL_ACCESS,
hKey)
'create the key
lRet = RegCreateKey(hKey, "Add-in Manager", hKey)
Else
'enumerate installed
bDone = False
lCtr = 0

Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0,
ByVal 0&, ByVal sData, lData)
If lRet = 0 Then
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData -
1, 0))
If sName Like sMASK Then
If StrComp(sName, sFull, vbTextCompare)
= 0 Then
If bUndo Then
RegDeleteValue hKey, sName
Else
bDone = True
End If
Else
RegDeleteValue hKey, sName
End If
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet < 0
End If

If hKey < 0 And Not (bDone Or bUndo) Then
sName = sFull
sData = vbNullString
RegSetValueEx hKey, sName, 0, 1, ByVal sData, Len(sData)
End If

RegCloseKey hKey

'----------------------------
'now do the opened addins
sKey = HKMS & "\" & vVers & "\Excel" & IIf(vVers = "8.0",
"\Microsoft Excel", "\Options")
lRet = RegOpenKeyEx(HKCU, sKey, 0, KEY_ALL_ACCESS, hKey)
If lRet = 0 Then
'init
Set cOpen = New Collection

'enumerate activated
lCtr = 0
Do
GoSub bufInit
lRet = RegEnumValue(hKey, lCtr, sName, lName, 0&,
ByVal 0&, ByVal sData, lData)
If lName 0 Then
sName = Left$(sName, lName)
sData = Left$(sData, IIf(lData 0, lData - 1,
0))
If sName Like "open*" Then
'kill it
RegDeleteValue hKey, sName
'save it if non-synk
If Not sData Like sMASK Then
cOpen.Add sData
End If
End If
End If
lCtr = lCtr + 1
Loop Until lRet = ERROR_NO_MORE_ITEMS

lCtr = 0
'(Re)write all items
If Not bUndo Then cOpen.Add """" & sFull & """"

For Each vOpen In cOpen
sName = "OPEN" & IIf(lCtr = 0, "", lCtr)
sData = vOpen
lRet = RegSetValueEx(hKey, sName, 0, 1&, ByVal
sData, Len(sData))
lCtr = lCtr + 1
Next
End If
RegCloseKey hKey

End If
Next

'CleanUp "VBA" settings
If bUndo Then
If Not IsEmpty(GetAllSettings(sVBAREGAPP, sVBAREGKEY)) Then
DeleteSetting sVBAREGAPP, sVBAREGKEY
End If
If cInst.Count 0 Then Install_Addin = True

endh:
If hKey < 0 Then RegCloseKey hKey
Exit Function

bufInit:
'initialize buffers
sName = Space(BUFFER_SIZE)
sData = Space(BUFFER_SIZE)
lName = BUFFER_SIZE
lData = BUFFER_SIZE
Return


errH:
Install_Addin = lErr
GoTo endh
End Function

Private Function Excel_IsOpen() As Boolean
Excel_IsOpen = (FindWindow("XLMAIN", vbNullString) < 0)
End Function
Private Function System_Language() As String
Dim sData$, lData& '&H400=user/&H800=system
'when you use the SYSTEM locale you get the language
'of the installed windows version not the language the user has
selected in regional settings
sData = Space(256)
lData = GetLocaleInfo(&H800, &H1001, sData, Len(sData))
If lData 0 Then System_Language = Left$(sData, lData - 1)
End Function








keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"RB Smissaert" wrote:

Does anybody have a clear example of how to remove an add-in from
the list that appears under Tools, Add-ins?
I would like to do this with API calls to the registry, but I can't
find any good example of this.
Thanks for any assistance.

RBS






Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
remove "linear" from trendline legend entry dschneiderch Charts and Charting in Excel 4 May 3rd 23 11:45 AM
Remove a column but not data table entry ClaireP Charts and Charting in Excel 4 October 9th 09 06:32 AM
Remove last <li entry from cells Easton King Excel Discussion (Misc queries) 17 September 18th 07 03:29 PM
remove entry from namebox WaterNinja Excel Discussion (Misc queries) 1 November 2nd 06 11:26 AM
Remove Spaces beginning Time entry Damon Longworth Excel Discussion (Misc queries) 10 June 19th 05 04:37 PM


All times are GMT +1. The time now is 03:59 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"