Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1812to1816
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ini Datei auslesen

Ini Datei auslesen
17.02.2021 11:14:48
Kay
Hallo,
ich habe ein AddIn mit mehreren Modulen. In den Modulen lese ich al erstes eine Excel-Konfigurationsdatei ein.
Wo diese liegt und wie diese heißt, kann je nach Installation verschieden sein.
Daher dachte ich mir, dass ich diese Information passend zum AddIn in eine ini Datei ablege.
Dann könnte ich mir den Pfad und den Dateinamen in eine public Variable lesen und die Module würde dann die Excel Konfigurationsdatei verarbeiten können.
Benötige ich eine eigene ini Datei oder hinterlege ich diese 2 Werte in eine bereits existierende ini Datei für Excel und wie lese ich diese per VBA denn dann aus, um die public Variablen zu setzen?
Zusammengefasst: Ich möchte den Pfad und den Namen einer Datei hinterlegen können und diese in allen Modulen verwenden.
Danke und Gruß
Kay

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ini Datei auslesen
17.02.2021 11:24:21
volti
Hallo Kay,
zum Auslesen von Inidateien gibt es u.a. eine API-Funktion.
Vielleicht bringt Dich diese ja weiter:
Code:

[Cc]

Option Explicit Private Declare PtrSafe Function GetPrivateProfileStringA Lib "kernel32" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, _ ByVal lpDefault As String, _ ByVal lpReturnedString As String, _ ByVal nSize As Long, _ ByVal lpFileName As String) As Long Private Declare PtrSafe Function WritePrivateProfileStringA Lib "kernel32" ( _ ByVal lpApplicationName As String, _ ByVal lpKeyName As Any, _ ByVal lpString As Any, _ ByVal lpFileName As String) As Long Sub IndateiLesen() Dim Txt As String * 500, sInidatei As String, sText As String sInidatei = "C:\MeineDatei.ini" GetPrivateProfileStringA "Bereich", "Item", "Vorgabe", Txt, 500, sInidatei sText = Left(Txt, InStr(Txt, vbNullChar) - 1) End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Ini Datei auslesen
17.02.2021 15:34:00
Kay
Danke Dir - passt super zum Auslesen.
Gruß Kay
AW: Ini Datei auslesen
17.02.2021 11:41:10
Nepumuk
Hallo Kay,
ein Beispiel zum schreiben und lesen einer .ini
Option Explicit

Private Declare PtrSafe Function WritePrivateProfileStringA Lib "kernel32.dll" ( _
    ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, _
    ByVal lpString As Any, _
    ByVal lpFileName As String) As Long
Private Declare PtrSafe Function GetPrivateProfileStringA Lib "kernel32.dll" ( _
    ByVal lpApplicationName As String, _
    ByVal lpKeyName As Any, _
    ByVal lpDefault As String, _
    ByVal lpReturnedString As String, _
    ByVal nSize As Long, _
    ByVal lpFileName As String) As Long

Public Sub Test()
    
    Const FILE_PATH As String = "G:\Test.ini"
    Const STRING_LENGTH As Long = 255
    
    Dim strReturn As String * STRING_LENGTH
    Dim lngResult As Long
    
    lngResult = WritePrivateProfileStringA("Suche", "Enter", "1", FILE_PATH)
    
    lngResult = WritePrivateProfileStringA("Suche", "Strg", "0", FILE_PATH)
    
    lngResult = GetPrivateProfileStringA("Suche", "Enter", "-1", strReturn, STRING_LENGTH, FILE_PATH)
    Debug.Print Left$(strReturn, lngResult)
    
    lngResult = GetPrivateProfileStringA("Suche", "Strg", "0", strReturn, STRING_LENGTH, FILE_PATH)
    Debug.Print Left$(strReturn, lngResult)
    
End Sub

Gruß
Nepumuk
Anzeige
AW: Ini Datei auslesen
17.02.2021 12:35:36
Kay
Hallo Nepumuk,
als VBA Anfänger schwer zu interpretieren, ob das, was ich benötige, damit erfolgreich umgesetzt wurde.
Also in der Const FILE_Path hast du den Ablageort incl. Namen der ini Datei hinterlegt.
Wo aber halte ich den den Namen und Pfad der eigentlichen Konfigurationsdatei, die ich mir dann aus der ini Datei in die 2 Public Variablen einlesen möchte?
Oder schreibst du den FILE_PATH in eine ini Datei (welche?) und liest diesen danach wieder aus?
Dann müsste ich nur "Suche" und "Enter" verstehen - oder stehen diese für einen zu setzenden Applikationsnamen und Keynamen?
D&G
Kay
Anzeige
AW: Ini Datei auslesen
17.02.2021 13:01:59
Nepumuk
Hallo Kay,
WritePrivateProfileStringA legt, so sie nicht vorhanden, im vorgegebenen Pfad eine neue .ini - Datei an.
"Suche" ist die Section unter der die Werte für "Enter" und "Strg" angelegt werden.
Probiere es einfach mal aus und schau die die .ini an, dann wirst du es verstehen.
Es ist übrigens möglich eine komplette Section mit einem Schlag auszulesen.
Gruß
Nepumuk
AW: Ini Datei auslesen
17.02.2021 15:34:56
Kay
Danke - hab's jetzt verstanden!
Gruß Kay
AW: Ini Datei auslesen
17.02.2021 17:04:24
Kay
Hallo Nepumuk,
leider muß ich nochmals nachfragen:
Kann es sein, dass ich den Option Explizit in jedes Modul kopieren muss?
Genauso die Konstante, von der ini Datei an sich...
Gibt es für ein AddIn nicht einen zentralen Ort, der für alle Module gilt?
D&G
Kay
Anzeige
AW: Ini Datei auslesen
17.02.2021 17:17:42
Nepumuk
Hallo Kay,
Gibt es für ein AddIn nicht einen zentralen Ort, der für alle Module gilt?
Nein. Du kannst das aber automatisieren. VBA-Editor - Extras - Optionen. Im Reiter "Editor" wählst du Automatische Syntaxüberprüfung ab und Variablendeklaration erforderlich an. Im Reiter Allgemein wählst du unter Unterbrechen bei Fehlern die Option In Klassenmodul.
Damit wird bei jedem neu eingefügten Modul in die erste Zeile automatisch "Option Explicit" eingefügt.
Das schützt dich vor Schreibfehlern von Variablennamen und zwingt die alle Variablen zu deklarieren.
Gruß
Nepumuk
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige