Código
Option Explicit 'Función api que recupera un valor-dato de un archivo Ini Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long 'Función api que Escribe un valor - dato en un archivo Ini 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 Long Private Const CODENL = "<?%!-/#¿>" Public Function Leer_Ini(Key As String, Default As Variant, Optional Aplicacion As String, Optional Path_INI As String) As String Dim Aplicacion_Ini As String Dim Path__Ini As String If Aplicacion = "" Then Aplicacion_Ini = "INI-EXAMPLE" 'Nombre de la INI Else Aplicacion_Ini = Aplicacion End If If Path_INI = "" Then Path__Ini = "C:\Archivo_INI" 'Path De la INI Else Path__Ini = Path_INI End If Dim bufer As String * 256 Dim Len_Value As Long Len_Value = GetPrivateProfileString(Aplicacion_Ini, Key, Default, bufer, Len(bufer), Path__Ini) Leer_Ini = Left$(bufer, Len_Value) Leer_Ini = Replace(Leer_Ini, CODENL, vbNewLine) End Function Public Function Grabar_Ini(Key As String, Valor As Variant, Optional Aplicacion As String, Optional Path_INI As String) As String Dim Aplicacion_Ini As String Dim Path__Ini As String If Aplicacion = "" Then Aplicacion_Ini = "INI-EXAMPLE" 'Nombre de la INI Else Aplicacion_Ini = Aplicacion End If If Path_INI = "" Then Path__Ini = "C:\Archivo_INI" 'Path De la INI Else Path__Ini = Path_INI End If Valor = Replace(Valor, vbNewLine, CODENL) WritePrivateProfileString Aplicacion_Ini, Key, Valor, Path__Ini End Function
Deje la variable "Path__INI" al igual que "Aplicacion_INI" en la función por que por lo general cuando yo uso las INI uso un solo "Nombre de aplicación" y una sola ubicación que por lo general es una variable del entorno así que es mas cómodo.
Ademas remplazo los "Saltos de linea(vbNewLine)" por el codigo "<?%!-/#¿>" para hacer asi compatible a la INI con multilinea
si no les gusta modifiquen lo como quieran. espero que a alguien le sirva. Gracias