AW: Dann entferne die AddIns manuell
20.02.2009 18:22:00
Rudi
Hallo,
das ist viel zu kompliziert. Wenn ich das AddIn (die Datei) lösche und anschließend im AddIn-Manager anklicke, bekomme ich eine Abfrage, ob das Addin aus der Liste gelöscht werden soll. Wenn ich die bejahe, ist es weg.
Ich wollte das ganze für den unbedarften User als Deinstallationsroutine bauen. Ein Addin zur Liste hinzufügen und installieren ist ja leicht. Aber der umgekehrte Weg geht nicht.
Workaround:
1. Addin.installed=false
2.Kill Addin.fullname
3. MsgBox an den User, dass er im folgenden Dialog auf das Addin klicken soll
4. Addins-Manager einblenden (Application.dialogs(xldialogaddinsmanger).show
Jetzt klickt der User auf das Addin, bekommt die Fehlermeldung und Frage und muss auf ja klicken, sowie den Manager wieder schließen
sieht dann vom Prinzip her so aus:
Sub AddInRaus()
Dim objAddIn As AddIn, blnAddIn As Boolean, strAddInTitle As String
Const strAddInName As String = "MeinAddIn.xla"
For Each objAddIn In AddIns
If objAddIn.Name = strAddInName Then
'AddIn deinstallieren und löschen
strAddInTitle = objAddIn.Title
objAddIn.Installed = False
If Dir(objAddIn.FullName, vbNormal) "" Then Kill objAddIn.FullName
'Manuell aus Liste löschen
MsgBox "Klicken Sie im folgenden Dialog auf " & vbLf _
& " '" & objAddIn.Title & "'," & vbLf _
& "bestätigen Sie die Abfrage mit 'Ja'," & vbLf _
& "und schließen Sie den Dialog wieder.", _
vbOKOnly, "AddIn aus Liste entfernen"
Application.Dialogs(xlDialogAddinManager).Show
End If
Next
'prüfen, ob das Addin aus der Liste entfernt wurde
If strAddInTitle "" Then
For Each objAddIn In AddIns
If objAddIn.Title = strAddInTitle Then
blnAddIn = True
End If
Next
MsgBox "Der Eintrag '" & strAddInTitle & "' wurde " _
& IIf(blnAddIn, "nicht ", "") _
& "entfernt.", , "Information"
Else
MsgBox "Kein AddIn gefunden.", , "Gebe bekannt ..."
End If
End Sub
Gruß
Dierk