Private Profilzeichenfolgen werden häufig verwendet, um benutzerspezifische Informationen außerhalb der Anwendung/des Dokuments zur späteren Verwendung zu speichern.
Sie könnten zum Beispiel Informationen über den neuesten Inhalt in einem Dialog/Benutzerformular hinterlegen,
wie oft eine Arbeitsmappe geöffnet wurde oder die zuletzt verwendete Rechnungsnummer für eine Rechnungsvorlage.
Die Informationen können in einer INI-Datei gespeichert werden, entweder auf der lokalen Festplatte oder in einem freigegebenen Netzwerkordner.
Eine INI-Datei ist eine gewöhnliche Textdatei und der Inhalt könnte etwa so aussehen:
[PERSÖNLICH]
Nachname=Doe
Vorname=John
Geburtsdatum=1.1.1960
UniqueNumber=123456
Private Profilzeichenfolgen für jeden Benutzer können auch in der Registrierung gespeichert werden.
Excel hat keine eingebaute Funktionalität zum Lesen und Schreiben in INI-Dateien wie Word (System.PrivateProfileString),
Sie benötigen also ein paar API-Funktionen, um dies auf einfache Weise zu tun.
Hier sind die Beispielmakros zum Schreiben und Lesen einer INI-Datei mit privaten Profilzeichenfolgen.
Const IniFileName As String = "C:\Ordnername\UserInfo.ini"
' Pfad und Dateiname der Datei mit den Informationen, die Sie lesen/schreiben möchten
Private Declare-Funktion 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 Deklarationsfunktion als String-Funktion) _ "Kernel32" (ByVal strSection As String, _ ByVal strKey As String, ByVal strString As String, _ ByVal strFileNameName As String) As Long Private Function WritePrivateProfileString32(ByVal strFileName As String, _ ByVal strSection As String, StringVal str ByVal strValue As String) As Boolean Dim lngValid As Long On Error Resume Next lngValid = WritePrivateProfileStringA(strSection, strKey, _ strValue, strFileName) If lngValid > 0 Then WritePrivateProfileString32 = True Bei Fehler GoTo 0 End Function PrivateString Funktion Get32 strProfile , _ ByVal strSection As String, ByVal strKey As String, _ Optional strDefault) As String Dim strReturnStri ng As String, lngSize As Long, lngValid As Long bei Fehler Weiter fortsetzen If IsMissing(strDefault) Then strDefault = "" strReturnString = Space(1024) lngSize = Len(strReturnString) lngValid = GetPrivateProfileStringA(strSection, Strault, _strReturn lngSize, strFileName) GetPrivateProfileString32 = Left(strReturnString, lngValid) On Error GoTo 0 End Function ' die folgenden Beispiele gehen davon aus, dass der Bereich B3:B5 im aktiven Blatt enthält ' Informationen über Nachname, Vorname und Geburtsdatum Sub WriteUserInfo() ' speichert Informationen in die Datei IniFileName If Not WritePrivateProfileString32(IniFileName, "PERSONAL", _ "Lastname", Range("B3").Value) Then MsgBox "Benutzerinformationen können nicht gespeichert werden in " & IniFileName, _ vbExclamation, "Ordner existiert nicht! " Exit Sub End If WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Lastname", Range("B3").Value WritePrivateProfileString32 IniFileName, "PERSONAL", _ "Firstname", Range("B4").Value WritePrivateProfileString32 IniFileName, "PERSONAL" , _ "Geburtsdatum", Range("B5").Value End Sub Sub ReadUserInfo() ' liest Informationen aus der Datei IniFileName If Dir(IniFileName) = "" Then Exit Sub Range("B3").Formula = GetPrivateProfileString32(IniFileName , _ "PERSONAL", "Nachname") Range("B4").Formula = GetPrivateProfileString32(IniFileName, _ "PERSONAL", "Vorname") Range("B5").Formula = GetPrivateProfileString32(IniFileName, _ "PERSONAL", "Geburtsdatum") End Sub ' das folgende Beispiel geht davon aus, dass der Bereich D4 im aktiven Blatt ' Informationen über die eindeutige Nummer enthält Sub GetNewUniqueNumber() Dim UniqueNumber As Long If Dir(IniFileName) = "" Then Exit Sub UniqueNumber = 0 On Error Resume Next UniqueNumber = CLng(GetPrivateProfileString32(IniFileName, _ "PERSONAL", "UniqueNumber")) Bei Fehler GoTo 0 Range("D4").Formula = UniqueNumber + 1 If Not WritePrivateProfileString32(IniFileName, "PERSONAL", _ "UniqueNumber", Range("D4").Value) Then MsgBox "Benutzerinformationen können nicht in " & IniFileName" gespeichert werden , _ vbExclamation, "Ordner existiert nicht!" Ende Sub End If End Sub