VBA 中是否有任何方法可以读取和写入 INI 文件?我知道我可以使用;
Open "C:\test.ini" For Input As #1
...并解析数据。相反,我想看看哪些工具已经可用。
我知道在 C# 中你可以...
using INI;
INIFile ini = new INIFile("C:\test.ini");
VBA是否有等价物?
我在 MS Access 2003 VBA 中尝试这样做。
这是我们使用的一些代码片段,它应该可以帮助您了解这个想法。这些例程使用 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
带有 [TextStream]( http://msdn.microsoft.com/en-us/library/314cz14s(VS.85).aspx)的FileSystemObject 对象是在 VBA 中读写文本文件的通常推荐方法。
Karl Peterson 的 kpini 几乎拥有您可能需要的一切:API 声明、Cinifile 类等等。我会从那个开始,然后根据口味改变它,这应该不会花很长时间。