Рекомендуемый способ чтения и записи.ini-файлы в VBA
доступны ли какие-либо методы в 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.
4 ответов
вот некоторые фрагменты кода, которые мы используем, это должно помочь вам получить представление. Эти процедуры используют вызовы 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
Это не очень приятно, но вы можете использовать Windows API. вот ссылка и еще один от MS.
объект FileSystemObject С помощью [TextStream] (http://msdn.microsoft.com/en-us/library/314cz14s (VS.85).aspx) обычно рекомендуемый метод для чтения и записи текстовых файлов в VBA.
kpini Карла Петерсона имеет почти все, что вам может понадобиться: объявления API, класс Cinifile и тому подобное. Я бы начал с этого и превратил его по вкусу, что не займет много времени.