首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel VBA读写改ini配置文件

 一些软件为了方便,会记住上次默认选择的路径、参数,可以免去每次打开要重新选择的烦恼。

小编之前用的是txt文件去记录默认路径、参数,但是由于新版系统默认是utf-8编码保存,如果txt存在中文得指定ANSI格式保存。处理上繁琐一些,读写代码也相对多一些。

近期找了vba读写ini的代码,改成.ini文件来存储配置信息,现在分享给大家。

在Excel VBA中添加模块,调用API代码

'处理ini文件Public 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 LongPublic 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

一、写入、修改ini文件

添加sub过程

Sub 写入及修改ini文件() Dim write1 As Long '参数一:Section Name (节的名称)。 '参数二:节下面的项目名称。 '参数三:项目的内容。 '参数四:ini配置文件的路径名称。 '文件不存在时,会新增ini文件,写入内容; '当文件存在时:参数2存在时,参数三不同值会变成修改;参数2不存在,则在相应【节】块后面添加一行项目、值 write1 = WritePrivateProfileString("往来单位", "文件01路径", "D:\客户资料.xlsx", ThisWorkbook.Path & "\我的默认配置.ini") write1 = WritePrivateProfileString("往来单位", "文件02路径", "D:\供应商资料.xlsx", ThisWorkbook.Path & "\我的默认配置.ini") write1 = WritePrivateProfileString("部门", "业务部", "TRUE", ThisWorkbook.Path & "\我的默认配置.ini") write1 = WritePrivateProfileString("部门", "采购部", "FALSE", ThisWorkbook.Path & "\我的默认配置.ini")End Sub

运行后,生成如下ini文件

修改代码也是一样的,可以修改key值,可以添加新的节、项目、值

Sub 修改ini文件() Dim write1 As Long write1 = WritePrivateProfileString("往来单位", "文件01路径", "D:\客户资料-123.xlsx", ThisWorkbook.Path & "\我的默认配置.ini") write1 = WritePrivateProfileString("往来单位", "文件03路径", "D:\供应商资料-456.xlsx", ThisWorkbook.Path & "\我的默认配置.ini") write1 = WritePrivateProfileString("职员", "经理", "张三", ThisWorkbook.Path & "\我的默认配置.ini")End Sub

运行以上代码,原ini文件变成以下内容

原有的节、项目,如果有新值则修改;

原有的节,如果有新项目,则会在节模块后面添加一行;

如果不存在的节、项目、值,则新增。

二、读取ini文件内容

Sub 读取ini() Dim read_OK1 As Long, read_OK2 As Long Dim read1 As String, read2 As String ' 初始化 read1 字符串为 256 个字符的空字符串 read1 = String(255, 0) '若.ini文件中项目无内容,则采用参数3的值,如果你在ini路径名称写错了,也读不出内容,也是会参数3的值。 ' 从 INI 文件中读取指定节("往来单位")下的指定键("文件02路径")的值 ' 如果未找到指定的节或键,则返回空字符串 ' 参数说明:第一个参数为节名,第二个参数为键名,第三个参数为默认值(如果未找到键则返回默认值) ' 第四个参数为接收读取结果的字符串变量,第五个参数为字符串变量的长度,第六个参数为 INI 文件路径 read_OK1 = GetPrivateProfileString("往来单位", "文件02路径", "", read1, 256, ThisWorkbook.Path & "\我的默认配置.ini") read2 = String(255, 0) read_OK2 = GetPrivateProfileString("职员", "经理", "", read2, 256, ThisWorkbook.Path & "\我的默认配置.ini") '截取 read1 中第一个 null 字符前的内容,去掉尾部乱码。如果写入表格,默认不会有乱码,直接在VBA内处理字符串时则需去掉 read1 = Left(read1, InStr(read1, Chr(0)) - 1) read2 = Left(read2, InStr(read2, Chr(0)) - 1) MsgBox read1 & Chr(10) & read2End Sub

运行结果

使用ini文件处理的好处是,你无需知道这个【节】、项目在文件中的行位置,不用循环,也不用正则提取,只要赋参数即可返回结果。

链接二:

https://www.123pan.com/s/2KeA-kwe5d.html

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OysHyHFctAMiFbV4tQSeAwbA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券