Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ini-Datei auslesen

Ini-Datei auslesen
04.01.2005 17:51:06
Jens
Liebe Excelianer,
Problem:
Ich lese Daten aus einer ini-Datei mit folgendem sinngemäßen Beispiel aus:

Private Sub CommandButton1_Click()
Dim INIPfad As String
INIPfad = ThisWorkbook.Path & "\userdaten.ini"
MsgBox System.PrivateProfileString(INIPfad, "Userdata", "Wert1") & Chr(13) & _
System.PrivateProfileString(INIPfad, "Userdata", "Wert5") & Chr(13) & _
System.PrivateProfileString(INIPfad, "Userdata", "Wert11") & Chr(13) & _
System.PrivateProfileString(INIPfad, "Userdata", "Wert150") & Chr(13) & _
End Sub

Meine Frage ist, ob die ini-Datei hier bei jedem Eintrag erneut geöffnet wird, oder ob es performantere Wege gibt, SPEZIELLE Einträge aus verschiedenen Sektionen der Ini-Datei auszulesen?
Meine gefundenen Rechercheresultate beziehen sich immer nur auf das Auslesen EINES Wertes.
Herzlichen Dank alle Tipps
Jens H.
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ini-Datei auslesen
Ramses
Hallo
ich hoffe du hast die Verweise auf die WORD Library aktiviert,... sonst klappt's nicht mit dem System.PrivateProfileString.
Meines Wissens nach geht das eigentlich nur mit einem vorangestellten Word.Objekt
Dim myWord as Object
Dim myResult as String
Set myWord = CreateObject("Word.Application.10")
myResult = myWord.System.PrivateProfileString...usw.
weil EXCEL das System.Private... als Methode nicht integriert hat.
Anyway:
Die Datei wird mit jedem Zugriff im RAM neu geöffnet.
Alternativ könntest du deine ganzen Einträge in die Registry schreiben, und von dort auslesen:
Option Explicit
Const RegAppName As String = "TestAnw"
Const RegKeySection As String = "StartUp"

Sub Reg_Key_setzen()
Dim i As Integer
For i = 1 To 10
SaveSetting appName:="TestAnw", section:="StartUp", key:=i, setting:=i + 75
'Eintrag mit Konstanten
'SaveSetting appname:=RegAppKey, section:=RegKeySection, key:=i, setting:=i + 75
Next i
End Sub


Sub Reg_Key_Alle_Settings_auslesen()
Dim Einstellungen As Variant, intsettings As Integer
' Einträge in der Registrierung vornehmen.
SaveSetting appName:="TestAnw", section:="Startup", key:="Top", setting:=75
'Ohne detaillierte Anweisung
SaveSetting "TestAnw", "Startup", "Left", 50
SaveSetting "TestAnw", "Startup", "right", 100
' Einstellungen abrufen.
Einstellungen = GetAllSettings(appName:="TestAnw", section:="Startup")
For intsettings = LBound(Einstellungen, 1) To UBound(Einstellungen, 1)
Debug.Print Einstellungen(intsettings, 0), Einstellungen(intsettings, 1)
Next intsettings
Debug.Print intsettings
End Sub


Sub Reg_Key_Einzelwert_auslesen()
Dim x As Variant
x = GetSetting(appName:="TestAnw", section:="Startup", key:="Top")
End Sub


Sub Reg_Key_löschen()
'Hauptschlüssel löschen
DeleteSetting "TestAnw" ', "Startup"
'Unterschlüssel löschen
'DeleteSetting "TestAnw", "Startup"
End Sub

Gruss Rainer
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Ini-Datei auslesen in Excel mit VBA


Schritt-für-Schritt-Anleitung

Um Werte aus einer .ini Datei auszulesen, kannst du den folgenden VBA-Code verwenden. Der Code liest mehrere Werte aus einer INI-Datei mit der Methode System.PrivateProfileString. Achte darauf, dass du die Word-Bibliothek aktiviert hast:

  1. Öffne Excel und gehe zum VBA-Editor (ALT + F11).
  2. Füge ein neues Modul hinzu (Rechtsklick auf „VBAProject“ > Einfügen > Modul).
  3. Kopiere und füge den folgenden Code ein:
Private Sub CommandButton1_Click()
    Dim INIPfad As String
    INIPfad = ThisWorkbook.Path & "\userdaten.ini"
    MsgBox System.PrivateProfileString(INIPfad, "Userdata", "Wert1") & Chr(13) & _
           System.PrivateProfileString(INIPfad, "Userdata", "Wert5") & Chr(13) & _
           System.PrivateProfileString(INIPfad, "Userdata", "Wert11") & Chr(13) & _
           System.PrivateProfileString(INIPfad, "Userdata", "Wert150") & Chr(13)
End Sub
  1. Ersetze userdaten.ini durch den Namen deiner INI-Datei.
  2. Klicke auf den CommandButton, um die Werte anzuzeigen.

Häufige Fehler und Lösungen

  • Fehler: „Objekt nicht gefunden“
    Lösung: Stelle sicher, dass die Word-Bibliothek in den Verweisen aktiviert ist. Gehe zu Extras > Verweise im VBA-Editor und aktiviere „Microsoft Word xx.x Object Library“.

  • Fehler: Mehrfache Öffnungen der INI-Datei
    Lösung: Die Datei wird bei jedem Zugriff neu geöffnet. Um die Performance zu verbessern, kannst du die Werte in einer Variablen speichern und sie von dort abrufen, anstatt die INI-Datei mehrmals zu öffnen.


Alternative Methoden

Wenn du eine performantere Lösung suchst, kannst du die Registry verwenden, um Werte zu speichern und abzurufen. Hier ist ein Beispiel, wie du die Registry anstelle einer INI-Datei nutzen kannst:

Sub Reg_Key_setzen()
    Dim i As Integer
    For i = 1 To 10
        SaveSetting appName:="TestAnw", section:="StartUp", key:=i, setting:=i + 75
    Next i
End Sub

Sub Reg_Key_auslesen()
    Dim x As Variant
    x = GetSetting(appName:="TestAnw", section:="Startup", key:="Top")
    MsgBox "Der Wert ist: " & x
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, wie du die System.PrivateProfileString-Methode und die Registry nutzen kannst.

Beispiel für das Auslesen eines Wertes aus einer INI-Datei:

Private Sub CommandButton2_Click()
    Dim INIPfad As String
    INIPfad = ThisWorkbook.Path & "\userdaten.ini"
    Dim wert As String
    wert = System.PrivateProfileString(INIPfad, "Userdata", "Wert1")
    MsgBox "Der Wert von Wert1 ist: " & wert
End Sub

Beispiel für das Speichern und Auslesen von Werten in der Registry:

Sub Reg_Key_werte_speichern()
    SaveSetting appName:="TestAnw", section:="Startup", key:="Top", setting:=75
End Sub

Sub Reg_Key_wert_auslesen()
    Dim wert As Variant
    wert = GetSetting(appName:="TestAnw", section:="Startup", key:="Top")
    MsgBox "Der Wert in der Registry ist: " & wert
End Sub

Tipps für Profis

  • Nutze Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Überlege, ob es sinnvoll ist, häufig verwendete Werte in einer globalen Variablen zu speichern, um wiederholte Zugriffe auf die INI-Datei oder Registry zu vermeiden.
  • Teste deinen Code gründlich, um sicherzustellen, dass er unter verschiedenen Bedingungen funktioniert.

FAQ: Häufige Fragen

1. Frage
Kann ich auch andere Dateiformate als .ini verwenden?
Antwort: Der System.PrivateProfileString-Befehl ist speziell für INI-Dateien konzipiert. Für andere Formate musst du alternative Methoden verwenden.

2. Frage
Wie kann ich die Werte in einer INI-Datei ändern?
Antwort: Du kannst die Werte in der INI-Datei manuell mit einem Texteditor ändern oder ein VBA-Skript erstellen, das die Werte aktualisiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige