Privataus profilio eilutės naudojant INI failus naudojant „Microsoft Excel“ VBA

Anonim

Privataus profilio eilutės dažnai naudojamos konkrečiai naudotojo informacijai saugoti ne programoje/dokumente, kad vėliau būtų galima naudoti.
Pavyzdžiui, galite išsaugoti informaciją apie naujausią turinį dialogo lange/„UserForm“,
kiek kartų buvo atidaryta darbaknygė arba paskutinis sąskaitos faktūros šablono sąskaitos faktūros numeris.
Informacija gali būti saugoma INI faile, vietiniame kietajame diske arba bendrame tinklo aplanke.
INI failas yra paprastas teksto failas, o jo turinys gali atrodyti maždaug taip:

[ASMENINIS]
Pavardė = Doe
Vardas = Jonas
Gimimo data = 1960 m
Unikalus numeris = 123456
Kiekvieno vartotojo asmeninio profilio eilutės taip pat gali būti saugomos registre.

„Excel“ neturi integruotos funkcijos skaityti ir rašyti į INI failus, tokius kaip „Word“ (System.PrivateProfileString),
todėl jums reikia kelių API funkcijų, kad tai padarytumėte lengvai.
Čia yra makrokomandų, skirtų rašyti ir skaityti iš INI failo, kuriame yra privataus profilio eilutės, pavyzdžiai.

Const IniFileName As String = "C: FolderName \ UserInfo.ini"
„failo, kuriame yra informacija, kurią norite skaityti/rašyti, kelias ir failo pavadinimas

Privati ​​deklaravimo 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 strFileName As Funkcija StripPrivateString _ "Kernel32" (ByVal strSection As String, _ ByVal strKey As String, ByVal strString As String, _ ByVal strFileNameName As String) Kaip ilga privati ​​funkcija WritePrivateProfileString32 (ByVal strFileName As String, _ ByVal strSection As String, String Kaip Boolean Dim , _ ByVal strSection As String, ByVal strKey As String, _ Neprivaloma strDefault) Kaip String Dim strReturnStri ng Kaip eilutė, lngSize kaip ilgai, lngValid kaip ilgai, klaida Tęskite toliau, jei IsMissing (strDefault) Tada strDefault = "" strReturnString = Space (1024) lngSize = Len (strReturnString) lngValid = GetPrivateProfileStringA (strSection, strKring, strSection, strKring, lngSize, strFileName) GetPrivateProfileString32 = Left (strReturnString, lngValid) On Error GoTo 0 End Function “toliau pateikiami pavyzdžiai daro prielaidą, kad diapazone B3: B5 aktyviame lape yra„ informacija apie pavardę, vardą ir gimimo datą Sub WriteUserInfo () “išsaugo informaciją failas „IniFileName“, jei ne „WritePrivateProfileString32“ („IniFileName“, „PERSONAL“, _ „Pavardė“, diapazonas („B3“). Reikšmė) Tada „MsgBox“ Neįmanoma išsaugoti vartotojo informacijos aplanke „& IniFileName, _ vbExclamation“, aplanko nėra! " Išeiti iš pabaigos, jei WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Pavardė", diapazonas ("B3"). Reikšmė WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Firstname", Range ("B4"). Value WritePrivateProfileStAL "In , _ "Gimimo data", diapazonas ("B5"). Reikšmė Pabaigos antrasis poskyris ReadUserInfo () 'skaito informaciją iš failo IniFileName If Dir (IniFileName) = "" Tada išeiti iš antrinio diapazono ("B3"). Formula = GetPrivateProfileString32 (IniFileName) , _ "PERSONAL", "Lastname") diapazonas ("B4"). Formulė = GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "Firstname") diapazonas ("B5"). Formulė = GetPrivateProfileString32 (IniFileName, _ "PERSONAL", Toliau pateiktame pavyzdyje „Gimimo data“) Pabaigai „daroma prielaida, kad aktyviojo lapo D4 diapazone yra informacijos apie unikalų numerį Sub GetNewUniqueNumber () Dim UniqueNumber As Long If Dir (IniFileName) =" "Tada išeikite iš dalies UniqueNumber = 0 On Error Tęsti kitą UniqueNumber = CLng (GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "UniqueNumber")) Dėl klaidos GoTo 0 diapazonas („D4“). Formulė = unikalus numeris + 1, jei ne „WritePrivateProfileString32“ („IniFileName“, „PERSONAL“, _ „UniqueNumber“, diapazonas („D4“). Reikšmė) Tada „MsgBox“ negali išsaugoti vartotojo informacijos „& IniFileName“ , _ vbPrašaukimas: "Aplanko nėra!" Išeiti iš antrinio galo, jei baigiamas antrasis