Daily Archives: 29.7.2013

Windowsin rekisterin hyödyntäminen

Silloin tällöin tulee tilanne, että luodessamme uutta asiakirjaa tarvittaisiin edellisestä asiakirjasta viimeiseksi käytettyä tietoa, esimerkiksi juokseva numero Excelissä tai asiakirjan juokseva numero Wordissa.

Tapoja on useampia. Eräs on Windowsin rekisterin hyödyntäminen, jos työ suoritetaan aina samalla koneella.

Jos sitä vastoin tarvitaan enemmän joustavuutta, voitaisiin arvo tallentaa esimerkiksi tekstitiedostona johonkin sitä varten luotuun kansioon.

Windowsin rekisterin hyödyntäminen

Excel-esimerkki:
GetValue hakee arvon rekisteristä ja SaveValue tallentaa.

Sub SaveValue()
    Dim lngArvo As Long
    On Error GoTo ErrH:
    lngArvo = Range("A1")
    SaveSetting appname:="Minun_sovellus", section:="Alustus", Key:="ViimNro", setting:=lngArvo
    Exit Sub
ErrH:
    MsgBox "Solussa A1 on oltava numeerinen arvo", vbExclamation + vbOKOnly, "Virheellinen arvo"
End Sub

Sub GetValue()
    Range("A1") = GetSetting(appname:="Minun_sovellus", section:="Alustus", Key:="ViimNro") + 1
End Sub

Word esimerkki:

Word-asiakirjassa käytetään kirjanmerkkiä AsNro, joka on valmiina asiakirjassa. Kirjoitetaan siihen arvo, joka poimitaan rekisteristä. Lisäyksen jälkeen arvo tallennetaan rekisteriin uudestaan.

Sub AsetaNro()
    Dim lngArvo As Long
    On Error GoTo ErrH
    Selection.GoTo What:=wdGoToBookmark, Name:="AsNro"

    lngArvo = GetSetting(appname:="Minun_sovellus", Section:="Alustus", Key:="ViimNro") + 1
    Selection.TypeText Text:=lngArvo
    SaveSetting appname:="Minun_sovellus", Section:="Alustus", Key:="ViimNro", setting:=lngArvo
    Exit Sub
ErrH:
    MsgBox "Kirjanmerkkiä AsNro ei löytynyt.", vbExclamation + vbOKOnly, "Asiakirjavirhe"
End Sub