Recommended way to read and write .ini files

前端 未结 4 1170
野性不改
野性不改 2021-02-04 12:23

Are any methods available in VBA to read and write INI files? I know I could use;

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

...and parse the data.

相关标签:
4条回答
  • 2021-02-04 13:03

    Here are some code snippets that we use, it should help you to get the idea. These routines use the API calls. Two functions are included to read / write a string setting to a specific section in the ini file.

    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
    
    0 讨论(0)
  • 2021-02-04 13:06

    Karl Peterson's kpini has just about everything you're likely to need: API declarations, a Cinifile class, stuff like that. I'd start with that and morph it to taste, which shouldn't take long.

    0 讨论(0)
  • 2021-02-04 13:07

    FileSystemObject object with a [TextStream](http://msdn.microsoft.com/en-us/library/314cz14s(VS.85).aspx) is the usually recommended method for reading and writing textfiles in VBA.

    0 讨论(0)
  • 2021-02-04 13:13

    It's not pleasant, but you can use the Windows API. Here's a link, and another from MS.

    0 讨论(0)
提交回复
热议问题