Question

Existe-t-il des méthodes disponibles dans VBA pour lire et écrire des fichiers INI? Je sais que je pourrais utiliser;

Open "C:\test.ini" For Input As #1

... et analyser les données. Au lieu de cela, j'essaie de voir quels outils sont déjà disponibles.

Je sais qu'en C #, vous pouvez faire ...

 using INI;
 INIFile ini = new INIFile("C:\test.ini");

Existe-t-il un équivalent pour VBA?

Je tente ceci dans MS Access 2003 VBA.

Était-ce utile?

La solution

Voici quelques extraits de code que nous utilisons, cela devrait vous aider à comprendre. Ces routines utilisent les appels d'API. Deux fonctions sont incluses pour lire / écrire un paramètre de chaîne dans une section spécifique du fichier ini.

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
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long

Public Function IniFileName() As String
  IniFileName = "c:\[yourpath here]\settings.ini"
End Function


Private Function ReadIniFileString(ByVal Sect As String, ByVal Keyname As String) As String
Dim Worked As Long
Dim RetStr As String * 128
Dim StrSize As Long

  iNoOfCharInIni = 0
  sIniString = ""
  If Sect = "" Or Keyname = "" Then
    MsgBox "Section Or Key To Read Not Specified !!!", vbExclamation, "INI"
  Else
    sProfileString = ""
    RetStr = Space(128)
    StrSize = Len(RetStr)
    Worked = GetPrivateProfileString(Sect, Keyname, "", RetStr, StrSize, IniFileName)
    If Worked Then
      iNoOfCharInIni = Worked
      sIniString = Left$(RetStr, Worked)
    End If
  End If
  ReadIniFileString = sIniString
End Function

Private Function WriteIniFileString(ByVal Sect As String, ByVal Keyname As String, ByVal Wstr As String) As String
Dim Worked As Long

  iNoOfCharInIni = 0
  sIniString = ""
  If Sect = "" Or Keyname = "" Then
    MsgBox "Section Or Key To Write Not Specified !!!", vbExclamation, "INI"
  Else
    Worked = WritePrivateProfileString(Sect, Keyname, Wstr, IniFileName)
    If Worked Then
      iNoOfCharInIni = Worked
      sIniString = Wstr
    End If
    WriteIniFileString = sIniString
  End If
End Function

Autres conseils

Ce n’est pas agréable, mais vous pouvez utiliser l’API Windows. Voici un lien et autre de MS .

objet FileSystemObject avec un [TextStream] ( http://msdn.microsoft.com/en-us/library /314cz14s(VS.85).aspx) est la méthode généralement recommandée pour lire et écrire des fichiers texte dans VBA.

Le kpini de Karl Peterson a à peu près tout ce dont vous êtes susceptible avoir besoin de: déclarations d'API, une classe Cinifile, des choses comme ça. Je commencerais par cela et le transformerais en goût, ce qui ne devrait pas prendre longtemps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top