Privātā profila virknes, izmantojot INI failus, izmantojot Microsoft Excel VBA

Anonim

Privātā profila virknes bieži izmanto, lai uzglabātu lietotājam specifisku informāciju ārpus lietojumprogrammas/dokumenta vēlākai lietošanai.
Piemēram, jūs varētu saglabāt informāciju par jaunāko saturu dialoglodziņā/UserForm,
cik reizes ir atvērta darbgrāmata vai pēdējais izmantotais rēķina veidnes rēķina numurs.
Informāciju var saglabāt INI failā vai nu lokālajā cietajā diskā, vai koplietotā tīkla mapē.
INI fails ir parasts teksta fails, un tā saturs varētu izskatīties šādi:

[PERSONĪGS]
Uzvārds = Briedis
Vārds = Jānis
Dzimšanas datums = 1.1.1960
Unikālais numurs = 123456
Katra lietotāja privātā profila virknes var saglabāt arī reģistrā.

Programmā Excel nav iebūvētas funkcijas lasīšanai un rakstīšanai INI failos, piemēram, programmā Word (System.PrivateProfileString),
tāpēc jums ir vajadzīgas pāris API funkcijas, lai to izdarītu vienkāršā veidā.
Šeit ir makro piemēri rakstīšanai un lasīšanai no INI faila, kurā ir privātā profila virknes.

Const IniFileName As String = "C: \ FolderName \ UserInfo.ini"
"ceļš un faila nosaukums failam, kurā ir informācija, kuru vēlaties lasīt/rakstīt

Privātās deklarēšanas funkcija GetPrivateProfileStringA Lib _ "Kernel32" (ByVal strSection kā virkne, _ ByVal strKey kā virkne, ByVal strDefault kā virkne, _ ByVal strReturnedString kā virkne, _ ByVal lngSize cik ilgi, ByVal strFileName Asfunkcija kā privāta raksta virkne) _ "Kernel32" (ByVal strSection As String, _ ByVal strKey As String, ByVal strString As String, _ ByVal strFileNameName As String) Kā gara privāta funkcija WritePrivateProfileString32 (ByVal strFileName As String, _ ByVal strSection As String, String ByVal strValue As String) Kā Būla Dim DimngngValid Kļūda Atsākt Nākamo lngValid = WritePrivateProfileStringA (strSection, strKey, _ strValue, strFileName) Ja lngValid> 0, tad WritePrivateProfileString32 = True On Error GoToal String FunctionPrint Funkcija , _ ByVal strSection kā virkne, ByVal strKey kā virkne, _ pēc izvēles strDefault) kā virkne Dim strReturnStri ng Kā virkne, lngSize tik ilgi, lngValid tik ilgi, kad kļūda Atsākt nākamo Ja IsMissing (strDefault) Tad strDefault = "" strReturnString = Space (1024) lngSize = Len (strReturnString) lngValid = GetPrivateProfileStringA (strSection, strKring, lngSize, strFileName) GetPrivateProfileString32 = Left (strReturnString, lngValid) On Error GoTo 0 End Function "zemāk esošie piemēri pieņem, ka diapazons B3: B5 aktīvajā lapā satur" informāciju par uzvārdu, vārdu un dzimšanas datumu Sub WriteUserInfo () "saglabā informāciju fails IniFileName If Not WritePrivateProfileString32 (IniFileName, "PERSONAL", _ "Lastname", Range ("B3"). Value) Tad MsgBox "Nevar saglabāt lietotāja informāciju mapē & IniFileName, _ vbExclamation", mape neeksistē! " Iziet no apakšgala, ja WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Lastname", Range ("B3"). Value WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Firstname", Range ("B4"). Value WritePrivateProfileStALP " , _ "Dzimšanas datums", diapazons ("B5"). Vērtības beigas Apakšlasījums ReadUserInfo () 'nolasa informāciju no faila IniFileName If Dir (IniFileName) = "" Tad iziet no apakšgrupas ("B3"). Formula = GetPrivateProfileString32 (IniFileName) , _ "PERSONAL", "Lastname") Diapazons ("B4"). Formula = GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "Firstname") Diapazons ("B5"). Formula = GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "Dzimšanas datums") Beigu apakšdaļa "Zemāk esošajā piemērā tiek pieņemts, ka diapazons D4 aktīvajā lapā satur" informāciju par unikālo numuru Sub GetNewUniqueNumber () Dim UniqueNumber As Long If Dir (IniFileName) = "" Pēc tam iziet no apakšsadales UniqueNumber = 0 Kļūda Atsākt nākamo UniqueNumber = CLng (GetPrivateProfileString32 (IniFileName, _ "PERSONAL", "UniqueNumber")) Par kļūdu GoTo 0 diapazons ("D4"). Formula = unikāls numurs + 1, ja nav WritePrivateProfileString32 (IniFileName, "PERSONAL", _ "UniqueNumber", diapazons ("D4"). Vērtība) Tad MsgBox "Nevar saglabāt lietotāja informāciju mapē & IniFileName" , _ vbIzsaukums: "Mape neeksistē!" Iziet no apakšgala Ja beidzas apakš