Domanda

Sono disponibili metodi in VBA per leggere e scrivere file INI? So che potrei usare;

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

... e analizza i dati. Invece sto cercando di vedere quali strumenti sono già disponibili.

So che in C # puoi fare ...

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

Esiste un equivalente per VBA?

Sto tentando questo in MS Access 2003 VBA.

È stato utile?

Soluzione

Ecco alcuni snippet di codice che utilizziamo, che dovrebbero aiutarti a ottenere l'idea. Queste routine utilizzano le chiamate API. Sono incluse due funzioni per leggere / scrivere un'impostazione di stringa in una sezione specifica nel file 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

Altri suggerimenti

Non è piacevole, ma puoi usare l'API di Windows. Ecco un link e un altro da MS .

FileSystemObject object con un [TextStream] ( http://msdn.microsoft.com/en-us/library /314cz14s(VS.85).aspx) è il metodo generalmente consigliato per leggere e scrivere file di testo in VBA.

la kpini di Karl Peterson ha quasi tutto ciò che è probabile bisogno: dichiarazioni API, una classe Cinifile, cose del genere. Comincerei con quello e lo trasformerei a piacere, il che non dovrebbe richiedere molto tempo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top