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
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
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
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.