Excel-macro's geschikt maken voor anderen
Pagina's in dit artikel
- Voorbereiding
- Map of add-in
- Menu's
- Toolbars
- Beperk toegang
- Code beveiligen
- Initialiseren
- Instellingen
- Talen
- Installatie
- Conclusie
Installatie
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
Dim vReply As Variant
Dim AddInLibPath As String
Dim CurAddInPath As String
Const sAppName As String = "Demobestand maken menu"
Const sFilename As String = "xlUtilDemo.xlam"
Const sRegKey As String = "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
On Error Resume Next
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
On Error Resume Next
FileCopy CurAddInPath, AddInLibPath
If Err.Number <> 0 Then
SomeThingWrong
Exit Sub
End If
With AddIns.Add(Filename:=AddInLibPath)
.Installed = True
End With
Else
vReply = MsgBox(prompt:="Installatie geannuleerd.", Buttons:=vbOKOnly, Title:=sAppName & " Setup")
End If
End Sub
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")
End Sub
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
On Error Resume Next
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
End If
End Sub
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.
Invoegtoepassing automatisch laten bijwerken
Dit artikel toont hoe je automatische updates voor je invoegtoepassing via je website kunt regelen.
Andere installatie programma's
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:
Installing An Excel Add-in Using Setup Factory