Het handmatige installeren van een invoegtoepassing is zo moeilijk niet:
Kies Extra, Invoegtoepassingen... uit het menu en klik op Bladeren. Selecteer
de invoegtoepassing (zoek eventueel de juiste map op) en klik OK en weer op OK.
Om het de gebruiker makkelijk te maken, kan het installeren ook via macro code
worden geregeld. Zie ook het bestand Setup
Utility.zip. Listing 9 toont de
relevante code voor het installeren.
Listing 9
OptionExplicit
Dim vReply AsVariant Dim AddInLibPath AsString Dim CurAddInPath AsString Const sAppName AsString = "Demobestand maken menu" Const sFilename AsString = "xlUtilDemo.xla" Const sRegKey AsString = "xlUtilDemo" ''' RegKey for settings
Sub Setup() vReply = MsgBox("De invoegtoepassing '" & sAppName & "'" & vbNewLine & _ "zal in uw standaard invoegtoepassingenmap" & vbNewLine & _ "worden geinstalleerd," & vbNewLine & vbNewLine & "doorgaan?", _ vbYesNo, sAppName & " Setup") If vReply = vbYes Then OnErrorResumeNext Workbooks(sFilename).Close False CurAddInPath = ThisWorkbook.Path & "\" & sFilename AddInLibPath = Application.LibraryPath & "\" & sFilename 'User
librarypath does not have a trailing path separator 'AddInLibPath =
Application.UserLibraryPath & sFilename OnErrorResumeNext FileCopy CurAddInPath, AddInLibPath If Err.Number <> 0 Then SomeThingWrong ExitSub EndIf With AddIns.Add(FileName:=AddInLibPath) .Installed = True EndWith Else vReply = MsgBox(prompt:="Installatie geannuleerd.", Buttons:=vbOKOnly, Title:=sAppName & " Setup") EndIf EndSub
Sub SomeThingWrong() vReply = MsgBox(prompt:="Er ging iets mis tijdens het kopieren" & vbNewLine _ & "van de invoegtoepassinge naar de invoegtoepassingenmap:" _ & vbNewLine & vbNewLine & Application.LibraryPath & "\" _ & vbNewLine & vbNewLine & "U kunt " & sAppName & " handmatig installeren door het bestand" _ & vbNewLine & sFilename & " zelf naar deze map te kopieren " _ & vbNewLine & "en vervolgens installeren door" & vbNewLine _ & "Extra, Invoegtoepassingen te kiezen uit het menu." _ & vbNewLine & vbNewLine & "Klik nog niet op OK, doe eerst het kopieren met Windows Verkenner." _ & vbNewLine & "U kunt dan even terug naar dit venster om het pad te controleren.", _ Buttons:=vbOKOnly, Title:=sAppName & " Setup") EndSub
Sub Uninstall() vReply = MsgBox("Wilt u de invoegtoepassing " & sAppName & vbNewLine & _ "van uw systeem verwijderen?", vbYesNo, sAppName & " Setup") If vReply = vbYes Then CurAddInPath = ThisWorkbook.Path & "\" & sFilename AddInLibPath = Application.LibraryPath & "\" & sFilename OnErrorResumeNext Workbooks(sFilename).Close False Kill AddInLibPath DeleteSetting sRegKey MsgBox "De invoegtoepassinge " & sAppName & " is van uw systeem verwijderd." _ & vbNewLine & "Om het verwijderen te completeren dient u " & sAppName _ & vbNewLine & "in het volgende dialoogvenster te" & vbNewLine _ & "selecteren en akkoord te gaan met de vraag" & vbNewLine & _ "of deze uit de lijst mag worden verwijderd.", vbInformation + vbOKOnly Application.CommandBars(1).FindControl(ID:=943, recursive:=True).Execute EndIf EndSub
De installatie code doet het volgende:
Sluiten van de invoegtoepassing (deze kan namelijk al aanwezig zijn en
moeten worden vervangen);
Het pad instellen waar het xla bestand staat (hetzelfde
pad als waar het installatiebestand staat);
Het pad bepalen waar Excel haar
invoegtoepassingen zal zoeken
Het xla bestand kopiėren van de eerste naar de
tweede map;
Vervolgens wordt gecontroleerd of er fouten zijn opgetreden
tijdens het kopiėren;
Tenslotte wordt de invoegtoepassing geļnstalleerd. De
hier getoonde programmacode kan zeer eenvoudig worden gebruikt voor allerlei
soorten invoegtoepassingen, door eenvoudigweg de inhoud ban een paar constanten
te wijzigen in de kop van de module (sAppName, sFilename en sRegKey).
Tevens is een subroutine opgenomen voor het verwijderen van de
invoegtoepassing.
Een bestand met deze code erin kunt u
hier vinden.
Deze pagina beschrijft hoe Excel omgaat met invoegtoepassingen en hoe die
kunnen worden geinstalleerd. Bevat tevens een installatie script voor het pakket
"Setup Factory" voor Excel invoegtoepassingen: