Nizovi privatnih profila pomoću INI-datoteka pomoću VBA u programu Microsoft Excel

Anonim

Nizovi privatnih profila često se koriste za spremanje podataka o korisniku izvan aplikacije/dokumenta za kasniju upotrebu.
Na primjer, podatke o najnovijem sadržaju možete pohraniti u dijaloški okvir/korisnički obrazac,
koliko je puta otvorena radna knjiga ili posljednji korišteni broj računa za predložak računa.
Podaci se mogu pohraniti u INI datoteku, bilo na lokalni tvrdi disk ili u zajedničku mrežnu mapu.
INI datoteka obična je tekstualna datoteka i sadržaj bi mogao izgledati otprilike ovako:

[OSOBNO]
Prezime = Srna
Ime = Ivan
Datum rođenja = 1.1.1960
Jedinstveni broj = 123456
Nizovi privatnih profila za svakog korisnika također se mogu pohraniti u registar.

Excel nema ugrađenu funkcionalnost za čitanje i pisanje u INI datoteke kao što Word ima (System.PrivateProfileString),
pa vam je potrebno nekoliko API funkcija da biste to učinili na jednostavan način.
Evo primjera makronaredbi za pisanje i čitanje iz INI datoteke koja sadrži nizove privatnih profila.

Const IniFileName As String = "C: \ Ime mape \ UserInfo.ini"
'put i naziv datoteke do datoteke koja sadrži podatke koje želite čitati/pisati

Privatna deklarirajuća 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 strFilePraVazaStranicaStranicaStranicaStranicaStranicaStan _ "Kernel32" (ByVal strSection As String, _ ByVal strKey As String, ByVal strString As String, _ ByVal strFileNameName As String) Kao duga privatna funkcija ByVal strValue Kao niz , _ ByVal strSection As String, ByVal strKey As String, _ Opcionalno strDefault) Kao niz Dim strReturnStri ng As String, lngSize As Long, lngValid As Long On Greška Nastavi dalje ako nedostaje (strDefault) Zatim strDefault = "" strReturnString = Razmak (1024) lngSize = Len (strReturnString) lngValid = GetPrivateProfileStringAre, stre, stre, stre, stre, stre, stre, stre, stre, streRection, stree, stree, stree, stree, stree, stree, strSee, stree, lngSize, strFileName) GetPrivateProfileString32 = Lijevo (strReturnString, lngValid) On Error GoTo 0 End Function 'donji primjeri pretpostavljaju da raspon B3: B5 u aktivnom listu sadrži' podatke o prezimenu, imenu i datumu rođenja pod WriteUserInfo () ' datoteka IniFileName Ako nije WritePrivateProfileString32 (IniFileName, "PERSONAL", _ "Lastname", Range ("B3"). Value) Zatim MsgBox "Ne može spremiti podatke o korisniku u" & IniFileName, _ vbExclamation, "Mapa ne postoji! " Zatvorite pod -kraj Ako WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Prezime", Raspon ("B3"). Vrijednost WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Ime", Raspon ("B4"). , _ "Datum rođenja", Raspon ("B5"). Vrijednost Kraj Podmreža Sub ReadUserInfo () 'čita podatke iz datoteke IniFileName Ako Dir (IniFileName) = "" Zatim izađite iz poddometa ("B3"). Formula = GetPrivateProfileString32 (IniFileName , _ "PERSONAL", "Lastname") Raspon ("B4"). Formula = GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "Firstname") Raspon ("B5"). Formula = GetPrivateProfileString32 (IniFileName, _ "PERON "Datum rođenja") Kraj Sub "donji primjer pretpostavlja da raspon D4 u aktivnom listu sadrži" informacije o jedinstvenom broju Sub GetNewUniqueNumber () Dim UniqueNumber As Long If Dir (IniFileName) = "" Zatim izađite iz pod UniqueNumber = 0 On Error Nastavi sljedeće UniqueNumber = CLng (GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "UniqueNumber")) On Error GoTo 0 Raspon ("D4"). Formula = UniqueNumber + 1 Ako nije WritePrivateProfileString32 (IniFileName, "PERSONAL", _ "UniqueNumber", Raspon ("D4"). Vrijednost) Zatim MsgBox "Nije moguće spremiti korisničke podatke u" & IniFileName , _ vbExclamation, "Mapa ne postoji!" Izađi iz Sub End Ako završi Sub