Zasebni nizi profilov z uporabo datotek INI z uporabo VBA v programu Microsoft Excel

Anonim

Nizki zasebnih profilov se pogosto uporabljajo za shranjevanje podatkov o uporabniku zunaj aplikacije/dokumenta za kasnejšo uporabo.
Podatke o najnovejši vsebini lahko na primer shranite v pogovornem oknu/uporabniškem obrazcu,
kolikokrat je bil odprt delovni zvezek ali zadnja uporabljena številka računa za predlogo računa.
Podatki se lahko shranijo v datoteko INI, bodisi na lokalni trdi disk ali v omrežno mapo v skupni rabi.
Datoteka INI je navadna besedilna datoteka in vsebina bi lahko izgledala nekako tako:

[OSEBNO]
Priimek = Srna
Ime = Janez
Datum rojstva = 1.1.1960
UniqueNumber = 123456
Niz zasebnega profila za vsakega uporabnika je mogoče shraniti tudi v register.

Excel nima vgrajene funkcije za branje in pisanje v datoteke INI, kot je Word (System.PrivateProfileString),
zato za enostaven način potrebujete nekaj funkcij API.
Tu so primeri makrov za pisanje in branje iz datoteke INI, ki vsebuje nize zasebnih profilov.

Const IniFileName As String = "C: \ Ime mape \ UserInfo.ini"
'pot in ime datoteke do datoteke, ki vsebuje podatke, ki jih želite prebrati/zapisati

Zasebna deklarirana funkcija GetPrivateProfileStringA Lib _ "Kernel32" (ByVal strSection As String, _ ByVal strKey As String, ByVal strDefault As String, _ ByVal strReturnedString As String, _ ByVal lngSize As Long, ByVal strFilePreMesec _ "Kernel32" (ByVal strSection As String, _ ByVal strKey As String, ByVal strString As String, _ ByVal strFileNameName As String) Kot dolga zasebna funkcija ByVal strValue As String) Kot Boolean Dim lngValid As Long On Error Nadaljevanje , _ ByVal strSection As String, ByVal strKey As String, _ Izbirno strDefault) Kot String Dim strReturnStri ng As String, lngSize As Long, lngValid As Long On Napaka se nadaljuje, če manjka (strDefault) Potem strDefault = "" strReturnString = Presledek (1024) lngSize = Len (strReturnString) lngValid = GetPrivateProfileStringAre, strek, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stre, stree, stre, stree, stree, lngSize, strFileName) GetPrivateProfileString32 = Levo (strReturnString, lngValid) On Error GoTo 0 End Function 'spodnji primeri predvidevajo, da obseg B3: B5 v aktivnem listu vsebuje' podatke o priimku, imenu in datumu rojstva pod WriteUserInfo () ' datoteka IniFileName Če ni WritePrivateProfileString32 (IniFileName, "PERSONAL", _ "Lastname", Range ("B3"). Value) Potem MsgBox "Ne morem shraniti podatkov o uporabniku v" & IniFileName, _ vbExclamation, "Mapa ne obstaja!" " Zaprite podkonec Če WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Lastname", Range ("B3"). Value WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Firstname", Range ("B4"). , _ "Birthdate", Range ("B5"). Value End Sub Sub ReadUserInfo () 'bere informacije iz datoteke IniFileName If Dir (IniFileName) = "" Potem zapustite podrazpon ("B3"). Formula = GetPrivateProfileString32 (IniFileName , _ "OSEBNO", "Priimek") Obseg ("B4"). Formula = GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "Ime") Obseg ("B5"). Formula = GetPrivateProfileString32 (IniFileName, _, P " "Datum rojstva") End Sub "Spodnji primer predvideva, da obseg D4 v aktivnem listu vsebuje" informacije o edinstveni številki Sub GetNewUniqueNumber () Dim UniqueNumber As Long If Dir (IniFileName) = "" Potem zapustite Sub UniqueNumber = 0 On Error Nadaljuj Naprej UniqueNumber = CLng (GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "UniqueNumber")) Napaka GoTo 0 Obseg ("D4"). Formula = UniqueNumber + 1 Če ni WritePrivateProfileString32 (IniFileName, "PERSONAL", _ "UniqueNumber", Range ("D4"). Vrednost) Potem MsgBox "Ne morem shraniti uporabniških podatkov v" & IniFileName , _ vbExclamation, "Mapa ne obstaja!" Zapri Sub End Če končate Sub