代码之家  ›  专栏  ›  技术社区  ›  Curtis Inderwiesche

在VBA中读写.ini文件的推荐方法

  •  8
  • Curtis Inderwiesche  · 技术社区  · 17 年前

    VBA中是否有读取和写入INI文件的方法?我知道我可以用;

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

    …并解析数据。相反,我试图看看哪些工具已经可用。

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

    VBA是否有一个等价物?

    我正在MS Access 2003 VBA中尝试此操作。

    4 回复  |  直到 6 年前
        1
  •  12
  •   Birger    17 年前

    下面是我们使用的一些代码片段,它应该可以帮助您理解。这些例程使用API调用。包括两个函数,用于将字符串设置读/写到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
    
        2
  •  4
  •   Jon B    17 年前

    这并不令人愉快,但您可以使用Windows API。 Here's a link another from MS .

        3
  •  1
  •   Fionnuala    17 年前

    FileSystemObject object 使用[文本流]( http://msdn.microsoft.com/en-us/library/314cz14s(VS.85).aspx) 是在VBA中读写文本文件通常推荐的方法。

        4
  •  1
  •   Mike Woodhouse    17 年前

    Karl Peterson's kpini 它提供了您可能需要的一切:API声明、Cinifile类等等。我会从它开始,并将其变形为味道,这不会花费太长时间。

    推荐文章