Most Valuable Professional


View Jan Karel Pieterse's profile on LinkedIn subscribe to rss feed
Subscribe in a reader

Home > Nederlandse site > Artikelen > Macro Verspreiden > Instellingen
This page in English

Excel-macro's geschikt maken voor anderen.

Instellingen bewaren

Veel applicaties geven de gebruiker de mogelijkheid instellingen te veranderen. Het is handig deze op te slaan, zodat de gebruiker dit niet telkens hoeft te herhalen. Er zijn uiteenlopende mogelijkheden om dit te doen. De eerste is door gebruik van een tekstbestandje. Voor de locatie van dit bestand zijn er verschillende mogelijkheden. De Windows map, een map onder "Documents & Settings", maar het gemakkelijkste is het om de map te gebruiken waar het bestand met de macro ook staat.

De voorbeeldcode in listing 5 slaat de "instellingen" op in het bestand xlutil01.ini in dezelfde map als het bestand zelf:

Listing 5

Option Explicit

Dim sInipath As String
Public gsTaal As String
Public gsBoodschap As String

Sub ReadIni()
    sInipath = ThisWorkbook.Path & "\"
    On Error Resume Next
    Open sInipath & "xlutil01.ini" For Input As #1
    If Err = 53 Then
        CreateIni
        Exit Sub
    End If
    Input #1, gsTaal, gsBoodschap
    Close #1
    bVarsOK = True
    On Error GoTo 0
End Sub

Sub CreateIni()
    gsTaal = "Nederlands"
    gsBoodschap = "De standaard boodschap."
    WriteIni
End Sub

Sub WriteIni()
    Open sInipath & "xlutil01.ini" For Output As #1
    Write #1, gsTaal, gsBoodschap
    Close #1
End Sub

Sub ChangeSettings()
    If Not bVarsOK Then ReadIni
    gsTaal = InputBox("Geef de taal", "xlUtil01", gsTaal)
    gsBoodschap = InputBox("Geef boodschap.", "xlUtil01", gsBoodschap)
    If gsTaal = "" Or gsBoodschap = "" Then
        ReadIni
        MsgBox "Wijziging geannuleerd!", vbOKOnly + vbInformation
        Exit Sub
    Else
        WriteIni
    End If
End Sub

Een andere methode voor het opslaan van instellingen is via het register. Hiervoor kan gebruik gemaakt worden van de twee functies GetSetting en SaveSetting. De instellingen worden in het register geplaatst op de volgende plaats: "My Computer\HKEY_CURRENT_USER\Software\VB and VBA Program Settings\".

De code in listing 6 laat zien hoe één en ander werkt:

Listing 6

Option Explicit

Dim gsShortCutKey As String

Sub GetSettings()
    gsShortCutKey = GetSetting("xlUtilDemo", "Settings", "ShortCutKey", "n")
End Sub

Sub SaveSettings()
    GetSettings
    gsShortCutKey = InputBox("Geef nieuwe sneltoets", , gsShortCutKey)
    If gsShortCutKey = "" Then Exit Sub
    gsShortCutKey = Left(gsShortCutKey, 1)
    SaveSetting "xlUtilDemo", "Settings", "ShortCutKey", gsShortCutKey
End Sub

Sub Deletesettings()
    DeleteSetting "xlUtilDemo"
End Sub

Afbeelding 9 toont het resultaat van het opslaan van deze waarde in de register editor.


Afbeelding 9: screenshot van de register editor

Run de sub "Deletesettings" om de registerwijziging ongedaan te maken.