Private Declare Function GetPrivateProfileSection Lib "kernel32.dll" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function GetPrivateProfileSectionNames Lib "kernel32.dll" Alias "GetPrivateProfileSectionNamesA" (ByVal lpszReturnBuffer As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Private Declare Function WritePrivateProfileString Lib "kernel32.dll" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long Public Sub MergeIniFiles(ByRef vsFirstFile As String, ByRef vsSecondFile As String, Optional ByVal vsDestFile As String) Dim sBuffer As String Dim nLength As Long Dim iSection As Long Dim iLine As Long Dim xsSections() As String Dim xsLines() As String Dim nPos As Long Dim nBuffserSize As Long If LenB(vsDestFile) Then FileCopy vsSecondFile, vsDestFile Else vsDestFile = vsSecondFile End If nBuffserSize = 0 Do nBuffserSize = nBuffserSize + &H4000& sBuffer = Space$(nBuffserSize) nLength = GetPrivateProfileSectionNames(sBuffer, nBuffserSize, vsFirstFile) Loop While nLength = nBuffserSize - 2 xsSections = Split(Left$(sBuffer, nLength), vbNullChar) For iSection = 0 To UBound(xsSections) If LenB(xsSections(iSection)) Then nBuffserSize = 0 Do nBuffserSize = nBuffserSize + &H4000& sBuffer = Space$(nBuffserSize) nLength = GetPrivateProfileSection(xsSections(iSection), sBuffer, nBuffserSize, vsFirstFile) Loop While nLength = nBuffserSize - 2 xsLines = Split(Left$(sBuffer, nLength), vbNullChar) For iLine = 0 To UBound(xsLines) nPos = InStr(xsLines(iLine), "=") If nPos Then WritePrivateProfileString xsSections(iSection), Left$(xsLines(iLine), nPos - 1), Mid$(xsLines(iLine), nPos + 1), vsDestFile End If Next iLine End If Next iSection End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.