ich habe mir zwar die Beispieldateien nicht angesehen. Doch bin ich ein wenig entsetzt darüber, wie sehr ini-Dateien hier belächelt werden und die Vorgehensweise von Florian in Misskredit gestellt wird. Das muss doch nicht sein! Wir wissen doch überhaupt nicht ob es nicht die cleverste Lösung überhaupt ist?!
Zwar bin ich kein API-Spezialist, doch kann man eine Ini ganz einfach so auslesen (mein Code bezieht sich auf das Beispiel des Eingangsposts):
.
Code:
Option Explicit
Private Declare Function GetPrivateProfileString Lib _
"kernel32" Alias "GetPrivateProfileStringA" _
(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 Function GetIniValue(ByVal strIniPath As String, _
ByVal strSection As String, _
ByVal strKey As String, _
Optional ByVal strDefault As String = vbNullString)
Dim strBuffer As String, lngResult As Long
strBuffer = Space$(256)
lngResult = GetPrivateProfileString(strSection, strKey, strDefault, strBuffer, Len(strBuffer), strIniPath)
GetIniValue = Left$(strBuffer, lngResult)
End Function
Sub FuelleRangesFromIni()
Dim sTabelle As String, sVal As String
Dim vRange As Variant, vRanges As Variant
Dim strBuffer As String, lngResult As Long
Const sIniPath As String = "c:\tmp\die.ini" 'Hier Pfad anpassen!
'erste Section = Tabellenblattname
strBuffer = Space$(256)
lngResult = GetPrivateProfileString(vbNullString, "", "", strBuffer, Len(strBuffer), sIniPath)
sTabelle = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
'alle Keys = Ranges
lngResult = GetPrivateProfileString(sTabelle, vbNullString, "", strBuffer, Len(strBuffer), sIniPath)
vRanges = Split(Mid(strBuffer, 1, lngResult - 1), vbNullChar)
'Schleife über alle Ranges
With Sheets(sTabelle)
For Each vRange In vRanges
Range(vRange).Value = GetIniValue(sIniPath, sTabelle, vRange, "")
Next
End With
End Sub
Eien Ini-Datei besteht ja aus sections (das was in den eckigen Klammern steht) und Key-Value Paaren. In der Regel sind die Sections und Keys dem Programmierer bekannt. Ist das bei dir, Flo auch so? Dann würde sich der Code nämlich vereinfachen.