Ini文件
[section1]
key1=s1value1
key2=s1value2
key3=2020-11-26
[section2]
key1=s2value1
key2=s2value2
key3=s2value3
key4=s2value4
IniFileHelpCls 类
Option Explicit
#If Win64 Then
Private Declare PtrSafe 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 PtrSafe Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpString As Any, ByVal lpFileName As String) As Long
#Else
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
#End If
Public InitFile As String
Public 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 As Long, sIniString As String, sProfileString As String
iNoOfCharInIni = 0
sIniString = ""
If sect = "" Or keyname = "" Then
Debug.Print "Section Or Key To Read Not Specified !!!", vbExclamation, "INI"
Err.Raise "Section Or Key To Read Not Specified !!!"
Else
sProfileString = ""
RetStr = Space(128)
StrSize = Len(RetStr)
Worked = GetPrivateProfileString(sect, keyname, "", RetStr, StrSize, InitFile)
If Worked Then
iNoOfCharInIni = Worked
sIniString = Left$(RetStr, Worked)
End If
End If
ReadIniFileString = sIniString
End Function
Public Function WriteIniFileString(ByVal sect As String, ByVal keyname As String, ByVal Wstr As String) As String
Dim Worked As Long, iNoOfCharInIni As Long
Dim sIniString As String
iNoOfCharInIni = 0
sIniString = ""
If sect = "" Or keyname = "" Then
Debug.Print "Section Or Key To Write Not Specified !!!", vbExclamation, "INI"
Err.Raise "Section Or Key To Read Not Specified !!!"
Else
Worked = WritePrivateProfileString(sect, keyname, Wstr, InitFile)
If Worked Then
iNoOfCharInIni = Worked
sIniString = Wstr
End If
WriteIniFileString = sIniString
End If
End Function
测试用代码:
Sub btnRead_Click()
Dim iniHelper As IniFileHelpCls
Set iniHelper = GetIniFileHelpCls
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1").Value = iniHelper.ReadIniFileString("section1", "key1")
ws.Range("A2").Value = iniHelper.ReadIniFileString("section1", "key2")
ws.Range("A3").Value = iniHelper.ReadIniFileString("section1", "key3")
ws.Range("A4").Value = iniHelper.ReadIniFileString("section1", "key4") ' not exist
ws.Range("A6").Value = iniHelper.ReadIniFileString("section2", "key1")
ws.Range("A7").Value = iniHelper.ReadIniFileString("section2", "key2")
ws.Range("A8").Value = iniHelper.ReadIniFileString("section2", "key3")
ws.Range("A9").Value = iniHelper.ReadIniFileString("section2", "key4")
End Sub
Sub btnWrite_Click()
Dim iniHelper As IniFileHelpCls
Set iniHelper = GetIniFileHelpCls
Dim ws As Worksheet
Set ws = ActiveSheet
iniHelper.WriteIniFileString "section1", "key3", Format(Now(), "yyyy-mm-dd")
End Sub
Private Function GetIniFileHelpCls() As IniFileHelpCls
Set GetIniFileHelpCls = New IniFileHelpCls
GetIniFileHelpCls.InitFile = ThisWorkbook.Path & "\test.ini"
End Function