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

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

在 VBA 中读写 .ini 文件的方法主要涉及到文件的读写操作,以下是一个简单的示例代码:

代码语言:vba
复制
Sub ReadWriteIniFile()
    Dim iniPath As String
    Dim section As String
    Dim key As String
    Dim value As String
    
    ' 设置 ini 文件路径
    iniPath = "C:\example.ini"
    
    ' 设置要读取的 section 和 key
    section = "Section1"
    key = "Key1"
    
    ' 读取 ini 文件中的值
    value = ReadIniFile(iniPath, section, key)
    
    ' 输出读取的值
    Debug.Print "Value: " & value
    
    ' 设置要写入的 section 和 key 以及值
    section = "Section2"
    key = "Key2"
    value = "Value2"
    
    ' 写入值到 ini 文件
    WriteIniFile iniPath, section, key, value
End Sub

Function ReadIniFile(ByVal iniPath As String, ByVal section As String, ByVal key As String) As String
    Dim fso As Object
    Dim iniFile As Object
    Dim sections As Object
    Dim keys As Object
    Dim value As String
    
    ' 创建文件系统对象
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' 检查文件是否存在
    If Not fso.FileExists(iniPath) Then
        Exit Function
    End If
    
    ' 打开 ini 文件
    Set iniFile = fso.OpenTextFile(iniPath, 1)
    
    ' 读取文件内容
    Do While Not iniFile.AtEndOfStream
        Dim line As String
        line = iniFile.ReadLine
        
        ' 检查是否为 section
        If Left(line, 1) = "[" And Right(line, 1) = "]" Then
            Set sections = Nothing
            Set keys = Nothing
            value = ""
        End If
        
        ' 检查是否为 key
        If InStr(line, "=") > 0 Then
            Dim parts As Variant
            parts = Split(line, "=")
            
            ' 如果是当前 section 和 key,则保存值
            If sections Is Nothing Or sections.Exists(section) Then
                If keys Is Nothing Or keys.Exists(key) Then
                    value = parts(1)
                End If
            End If
            
            ' 添加 key 到当前 section
            If sections Is Nothing Or sections.Exists(section) Then
                keys(key) = ""
            End If
        End If
        
        ' 如果是新的 section,则保存到 sections 集合中
        If sections Is Nothing And Left(line, 1) = "[" And Right(line, 1) = "]" Then
            Set sections = CreateObject("Scripting.Dictionary")
            sections(section) = ""
        End If
    Loop
    
    ' 关闭文件
    iniFile.Close
    
    ' 返回读取的值
    ReadIniFile = value
End Function

Sub WriteIniFile(ByVal iniPath As String, ByVal section As String, ByVal key As String, ByVal value As String)
    Dim fso As Object
    Dim iniFile As Object
    Dim sections As Object
    Dim keys As Object
    Dim foundSection As Boolean
    Dim foundKey As Boolean
    
    ' 创建文件系统对象
    Set fso = CreateObject("Scripting.FileSystemObject")
    
    ' 检查文件是否存在
    If Not fso.FileExists(iniPath) Then
        Exit Sub
    End If
    
    ' 打开 ini 文件
    Set iniFile = fso.OpenTextFile(iniPath, 1)
    
    ' 读取文件内容
    Do While Not iniFile.AtEndOfStream
        Dim line As String
        line = iniFile.ReadLine
        
        ' 检查是否为 section
        If Left(line, 1) = "[" And Right(line, 1) = "]" Then
            Set sections = Nothing
            Set keys = Nothing
            foundSection = False
            foundKey = False
        End If
        
        ' 检查是否为 key
        If InStr(line, "=") > 0 Then
            Dim parts As Variant
            parts = Split(line, "=")
            
            ' 如果是当前 section 和 key,则保存值
            If sections Is Nothing Or sections.Exists(section) Then
                If keys Is Nothing Or keys.Exists(key) Then
                    foundKey = True
                    If parts(1) <> value Then
                        ' 如果值不同,则更新值
                        iniFile.Position = iniFile.Position - Len(line) - 2
                        iniFile.Write key & "=" & value
                        Exit Do
                    End If
                End If
            End If
            
            ' 添加 key 到当前 section
            If sections Is Nothing Or sections.Exists(section) Then
                keys(key) = ""
            End If
        End If
        
        ' 如果是新的 section,则保存到 sections 集合中
        If sections Is Nothing And Left(line, 1) = "[" And Right(line, 1) = "]" Then
            Set sections = CreateObject("Scripting.Dictionary")
            sections(section) = ""
            If section = section Then
                foundSection = True
            End If
        End If
    Loop
    
    ' 如果没有找到 section,则添加到文件末尾
    If Not foundSection Then
        iniFile.Write vbNewLine & "[" & section & "]" & vbNewLine
        foundSection = True
    End If
    
    ' 如果没有找到 key,则添加到文件末尾
    If Not foundKey Then
        iniFile.Write key & "=" & value & vbNewLine
    End If
    
    ' 关闭文件
    iniFile.Close
End Sub

这个示例代码中,ReadIniFile 函数用于从 .ini

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

QT读写.INI文件实现方法

一、.INI文件定义 .ini 文件是Initialization File缩写,即初始化文件,是windows系统配置文件所采用存储格式,统管windows各项配置,一般用户就用windows...二、QT中提供读写.INI文件基本使用方法 1、包含头文件 1#include 2、如何写INI文件 (1)定义一个QSettings指针对象,例如: 1QSettings *...文件 1Config_ini_Write->setValue("/Setting/xxx","100"); (4)释放对象堆内存 1detele Config_ini_Write ; 3、如何读INI...("INI",QSettings::IniFormat); (3)获取INI文件键值,键值可以是字符串,也可以是别的类型(前提是,有INI这个文件INI这个文件可以随便命名),例如: 1QString...; 46} 运行结果,生成了一个Config.ini文件,并且能读到INI里存放参数为100 ?

6.3K20

C#读写INI文件最简方法

一、引言 INI文件,全称为Initialization File(初始化文件),是一种传统文本型配置文件格式,广泛应用于Windows操作系统及早期应用程序,用于存储软件各项设置和参数。...本文将聚焦于C#语言环境下,介绍如何以最简化方式实现INI文件读写操作。...三、C#读写INI文件最简方法 在C#,虽然.NET框架并未直接提供对INI文件内置支持,但可以通过以下两种简便途径实现INI文件读写: 1....其中包含了对INI文件操作便捷方法,无需额外引入外部库或编写复杂P/Invoke代码。...这两种方法均能有效满足基本INI文件处理需求,开发者可根据项目的具体需求和偏好选择合适方法

89710
  • python读写ini格式配置文件

    生信工程师日常工作,除了进行脚本编程,处理文件读写,画图,统计等常规操作,还会涉及到编写一整套完整pipeline,此时就需要一个标准配置文件,来保存需要参数设置。...业界常用标准化配置文件格式有以下几种 ini json xml yaml ini作为windows上配置文件标准格式,更加易于没有编程基础的人来编写和修改,后三种格式则对于程序而言更加友好,处理更加方便...在python3,通过内置模块configparser来读取ini文件,用法如下 >>> import configparser>>> config = configparser.ConfigParser...()>>> config.read('config.ini')['config.ini'] 读取成功后,所有的内容存储在config这个对象,可以用类似字典操作来访问数据 # sections方法返回所有...config.write(f)...>>> ini定义了配置文件标准格式,通过configparser模块可以快速便捷处理ini文件。 ·end·

    1.4K10

    python文件读写

    读写文件是日常开发中最高频操作,从文件读取你需要处理数据,根据处理逻辑编写代码,将处理好之后结果保存到结果文件。...读取数据通常有两种模式 第一种,读取用户键盘输入,使用场景,让用户输入yes或者no来控制程序走向 第二种,读取文件内容, 也是使用最广泛场景 通过input函数来读取键盘输入,用法如下 >...0x7fbf5adaa540> 返回值我们称之为文件句柄,可以看到在返回值显示了mode值,这个值对应文件打开模式,常用有以下3种 r, 只读模式 w,写入模式, 原有的内容会被忽略...在python,还提供了一系列read方法来读取文件,用法如下 # read方法一次读取所有行 # 返回值为一个字符串 >>> f = open('result.txt') >>> f.read()...为了更加安全方便进行文件读写,python提供了with语句,写法如下 # 循环读取文件 # 每次读取一行 with open('result.txt') as f: for line in

    1.1K30

    【8】python文件读写方法

    encoding:编码方式   errors:错误处理 (2)读取文件 (3)关闭文件 (2)读取文件几种方法 # 第二步:读取文件内容 四个方法 #1:方法1-读取文件全部内容[...finally: if f1: f1.close() 方法2:带with自动关闭文件方式 # 方法2 with 自动关闭文件 path=r'E:\[AAA]全栈学习python...关于二进制读写总结 # 总结: 如果是按照二进制打开文件,要写入或者读取一定要编码 解码。 # 对于二进制读与写,要进行对应结构编码与解码,编码和解码用相同方式才行。中文也可以解析出。...:使用json库 来进行读写 说明: json 文件 非常有用,因为我们往往需要在关闭程序前把程序所处理得到数据进行保存,在下一次打开程序时候再加载这些数据,这就要用到json。...day3\jsonfile1.json' with open(path,'w') as json_file: json.dump(list1, json_file) # 2 把json文件内容取出

    53410

    numpy文件读写

    在实际开发,我们需要从文件读取数据,并进行处理。...在numpy,提供了一系列函数从文件读取内容并生成矩阵,常用函数有以下两个 1. loadtxt loadtxt适合处理数据量较小文件,基本用法如下 >>> import numpy as np...默认采用空白作为分隔符,将文件内容读取进来,并生成矩阵,要求每行内容数目必须一致,也就是说不能有缺失值。由于numpy矩阵中都是同一类型元素,所以函数会自动将文件内容转换为同一类型。...除了经典文件读取外,numpy还支持将矩阵用二进制文件进行存储,支持npy和npz两种格式,用法如下 # save函数将单个矩阵存储到后缀为npy二进制文件 >>> np.save('out.npy...以上就是numpy文件读写基本用法,numpy作为科学计算底层核心包,有很多包对其进行了封装,提供了更易于使用借口,最出名比如pandas,通过pandas来进行文件读写,会更加简便,在后续文章再进行详细介绍

    2.1K10

    用Python读写文件方法

    使用Python读写某种特别类型文件,例如:JSON、CSV、Excel等,一般会有专门模块。但是,在这里,我们将用Python打开文本文件(.txt)。...若使用Pythonopen函数,它将返回一个文件对象,此对象将包含一些方法和属性。我们可以使用这些方法和属性获得已打开文件相关信息,并且,可以使用这些方法来更改所打开文件。...mode='r+'表示可读写,但是文件必须存在,否则报错。 一个简单示例 在下面的代码示例中使用open()代开一个文件,此处假设文件与Python脚本在同一个目录,否则要增加路径。...现在,如果我们想打印文本文件内容,可以有三个方法。第一个,使用文件对象read()方法,读取整个文件内容。也就是说,用txtfile.read()可以得到以下输出: ?...分词和统计 在读取文件后,可以使用字符串split()方法将文本文件句子分割成单词,然后用collections模块Counter类来统计打开文件单词数量。

    1.9K30

    PHPphp.ini文件详解 原

    php.ini是PHP初始化配置文件,该文件下内容非常多,进行个性化配置并不方便,所以在进行LNMP环境搭建时我们并没有完全使用它,只使用了其中默认开启部分配置(该部分配置必须保留,所以PHP配置文件目录下必须有该文件...; 而php.ini设置更改可以反映出相当变化,   ; 在使用新PHP版本前,研究一下php.ini会有好处   ;;;;;;;;;;;;;;;;;;;   ; 关于这个文件 ;   ;;;;...  ;   ; 值可以是一个字符串,一个数字,一个 PHP 常量 (如: E_ALL or M_PI), INI 常量   ; 一个 (On, Off, True, False, Yes, No...  ;   ; 所有在 php.ini-dist 文件里设定值与内建默认值相同(这是说,如果 php.ini   ; 没被使用或者你删掉了这些行,默认值与之相同).   ;;;;;;;;;;;;;...session.referer_check = ; 检查 HTTP引用以使额外包含于URLsids无效   session.entropy_length = 0 ; 从文件读取多少字节   session.entropy_file

    3.7K10

    Java文件读写操作

    像我们经常会遇到这样事情,例如一个txt文件中有姓名和电话,这个时候很经常就需要将名字和电话号码进行提取操作,这个时候就可以利用Javaio来实现了。...这里我就不具体介绍io字节流和字符流异同点了,有兴趣同学可以自己百度百度。 今天主要是介绍一下如何实现对文件内容获取还有就是对获取文件内容进行修改操作。下面看具体案例介绍。 ?...这个案例分为三个模块:1.文件读取模块,2.姓名电话分离模块,3.文件写入模块 1.文件读取模块: /** * 功能:Java读取txt文件内容 * 步骤:1:先获得文件句柄...,然后对信息进行处理,最后将处理好信息添加到新文件中去。...这里需要注意是:项目的编码格式要写成utf-8,否则会出现乱码情况。 ? 到这里文件读写操作就完结了,是不是特别简单方便。

    97280

    ConfigParser:Python对于ini格式配置文件使用

    :py_0123) 介绍: 今天想写一篇文章来记录一下在PythonConfigParser这个模块使用方法 ini格式配置文件无论是在Windows还是Linux这样操作系统,都是十分常见格式...常见东西,python里面往往都有一个支持它东西 ini配置文件简介 后缀不一定是ini,像ini,cfg,conf,txt都可以,本质上就是text文本文件 ini配置文件内容由,节,键(或者称为选项...from configparser import ConfigParser#实例化一个对象config = ConfigParser() 这个实例方法 config.sections() #返回所有节点名称...,最后返回一个成功读取文件列表 config.read_file(fn,source=None) #解析一个文件对象(通俗讲就是你打开一个文件之后,这就是一个文件对象) config.read_string...(string) #先将字符串转变问文件对象,然后执行上面那个方法 config.dict(dictionary) #解析字典,字典里面必须嵌套一个字典,如:#{"section":{"option

    1.8K20

    android 识别U盘以及读写文件方法

    android读写文件需求地方很多,其中就包括了识别U盘,弹出U盘,读写U盘文件等。 那么,如何实现这些需求呢?...,因为我们可以在这回调用执行线程达到遍历数据目的,从而数据到U盘和文件个数,其次是QueryArg是一个自定义类,用于封装我们所需要数据,以便区分。...要对自身软件在弹出状态下不重新插拔前提下,实现重加载笔者暂时没看到有相关方法,若有请告知,谢。 3.读写U盘文件 在前面1有识别U盘方法,其中在遍历时候可以自定义一个回调。...如此,大致上就可以完成大致上关于U盘读写识别相关需求,当然此文也是浅尝辄止,许许多多细节都要自己去尝试并完善。...以上这篇android 识别U盘以及读写文件方法就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.7K20

    再谈文件读写:判断文件几种方法及其优劣对比

    上周,猫猫写了一篇给Python学习者文件读写指南,跟大家一起详尽地学习了文件读写基础内容,以及with语句与上下文管理器进阶知识。...这份指南虽然写得很用心,但是因为只关注了文件读写核心内容,所以也有美中不足不处,有些在实战中所需知识点没有谈到,例如,为了能够进行文件读写,首先得找到文件文件得可读写才行。...阅读这篇文章,你将读到如下内容: 1、判断文件方法(try语句、os模块、pathlib模块) 2、以上几种方法优劣对比 懒人try语句 我们之前学过,要用with语句来处理文件读写,但with语句也不是万能...下面,我们要学习是跟文件判断密切相关几个方法。...os.access("cat/images", os.W_OK) >>>True # path可写 os.access("cat/images", os.X_OK) >>>True # path可执行 4、os模块其它常用方法

    47840
    领券