Excel-macro's geschikt maken voor anderen

Pagina's in dit artikel

  1. Voorbereiding
  2. Map of add-in
  3. Menu's
  4. Toolbars
  5. Beperk toegang
  6. Code beveiligen
  7. Initialiseren
  8. Instellingen
  9. Talen
  10. Installatie
  11. 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

Option Explicit

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