online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon Gast2345 vom 10.10.2021, 01:50 Options

VBA in Ini-Datei schreiben

Hi alle,

weiss jemand wie ich mit VBA in eine INI-Datei nur die Sektion per GetPrivateProfilString schreiben kann?

Also es sollte dann nichts weiter erstmal in der INI stehen, wie z. B.:

[Test]

Ich hatte mal eine Seite wie es mit GetPrivateProfilString geht, aber finde sie nicht mehr.

Wer kann mir helfen?

Thx!!!


Antwort schreiben

Antwort 1 von Massaraksch vom 10.10.2021, 04:30 Options

Mit Get gehts wohl kaum, eher mit Write... Und so funktionierts bei mich:
Private Declare Function WritePrivateProfileString Lib "kernel32" _
  Alias "WritePrivateProfileStringA" ( _
  ByVal lpApplicationName As String, _
  ByVal lpKeyName As String, _
  ByVal lpString As String, _
  ByVal lpFileName As String) As Boolean

Sub IniTest()
Dim x As Boolean
    'Abschnitt mit Beispieleintrag erzeugen
    x = WritePrivateProfileString("Test", "blabla", "xxx", "C:\Settings.txt")
    'Beispieleintrag wieder entfernen, Abschnitt bleibt
    x = WritePrivateProfileString("Test", "blabla", vbNullString, "C:\Settings.txt")
End Sub

Massaraksch

Antwort 2 von Gast2345 vom 10.10.2021, 12:19 Options

@Massaraksch:

Vielen Dank auch, werde ich später gleich mal probieren. Melde mich morgen dann noch einmal, ob es geklappt hat. So wie ich das intepretiere bleibt da aber
[Test]
blabla =

übrig?! Ich möchte aber nur [Test] haben?!

Antwort 3 von Gast2345 vom 10.10.2021, 12:30 Options

So hab jetzt nochmal was probiert.

Private Sub CommandButton1_Click()
Dim x As String
Dim strPfad As String
x = "Test"
strPfad = "C:\test\test.ini"
System.PrivateProfileString(strPfad, "Test", "") = x
End Sub


Dann steht in der Ini:

[Test]
Test=
=Test


Aber wie gesagt, es soll ja nut [Test] stehen.
Sorry hatte im ersten Postiing GetPrivateProfilString geschrieben meinte aber PrivateProfileString.

Thx

Antwort 4 von Gast2345 vom 11.10.2021, 00:38 Options

Hat keiner mehr eine Idee, bitte?

Antwort 5 von Massaraksch vom 11.10.2021, 01:20 Options

Zuerst eine Frage: Was gefällt dir an meinem funktionierendem Beispiel nicht?

Kurze Erläuterung noch zu dem Ganzen:

Man kann wohl keinen leeren Abschnitt mit einem einzelnen Aufruf erzeugen ((jedenfalls fand ich keine Möglichkeit). Deshalb füge ich zuerst den gewünschten Abschnitt "Test" mit einem (Phantasie-)Eintrag "Blabla" ein und entferne den überflüssen Eintrag mit dem nächsten Befehl gleich wieder. So bleibt nur der leere Abschnitt "Test" übrig.
(hab ich ja oben im Code dokumentiert)

Mit der VBA-Funktion "System.PrivateProfileString" kann ein INI-Eintrag jedoch dummerweise nicht gelöscht werden. Daher greife ich auf die allgemeine WinAPI-Funktion "WritePrivateProfileString" zurück.
(mit dem speziellen Parameter "vbNullString" wird der Eintrag "blabla" gelöscht).

Die API-Funktion muß zuerst im VBA-Modul deklariert werden, bevor man sie benutzen kann (obige Zeilen mit "Private Declare ...). Die Deklaration übrigens nicht im Makro, sondern auf Modulebene, also über dem ersten Sub...End Sub.

"x" ist im Beispiel nur der Rückgabewert der ausgeführen Funktion und ergibt "Wahr" bei Erfolg des Befehls. Könnte man bei Bedarf zur Auswertung nutzen.

So, weiterführende Erläuterungen sind kostenpflichtig... kleiner Scherz ;o)

Massaraksch

Antwort 6 von Gast2345 vom 11.10.2021, 14:22 Options

@Massaraksch:
Deine Lösung funktioniert, keine Frage zu 100%. Super! Du darfst mich nicht falsch verstehen, lt. einem Kumpel und ich meine, ich hätte es mal auf einer Webseite gesehen, soll auch über System.PrivateProfileString(strPfad, "Test", "") = x in der Richtung funktionieren und angeblich kann ich mir dadurch den API-Aufruf ersparen.

Nur probiere ich schon zig Kombinationen und ich komme einfach nicht auf die Lösung
und bin langsam am verzweifeln. Falls Du oder auch jemand anders auf die Lösung kommt, wäre ich Euch sehr dankbar über eine Rückmeldung, weil ich komme einfach nicht drauf.

Vielen Dank nochmals vorab!

Antwort 7 von Gast2345 vom 12.10.2021, 20:27 Options

@Massaraksch:

Wollte die nur mitteilen, auch mein Kumpel schaffte es vor meinen Augen nicht mehr.
Deshalb haben wir uns nun auf Deine Lösung verständigt. Nochmals vielen Dank auch für Deine Unterstützung!

Ähnliche Themen

Batch datei über.bat schreiben+ starten?
adsun  27.01.2009 - 227 Hits - 11 Antworten

Suche meine php.ini, und wo ist dies: /usr/local/php5/lib/php.ini
TremorChrist  07.09.2009 - 343 Hits - 7 Antworten

html datei mit php schreiben
Distroyer  25.09.2009 - 197 Hits - 2 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026