首页
学习
活动
专区
工具
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文件处理需求,开发者可根据项目的具体需求和偏好选择合适的方法。

1.4K10
  • 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文件中的内容取出

    54610

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

    1.9K30

    PHP中的php.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引用以使额外包含于URLs中的ids无效   session.entropy_length = 0 ; 从文件中读取多少字节   session.entropy_file

    3.7K10

    Java中对文件的读写操作

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

    99280

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

    :py_0123) 介绍: 今天想写一篇文章来记录一下在Python中ConfigParser这个模块的使用方法 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.9K20

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

    上周,猫猫写了一篇给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模块中其它常用方法

    49240

    WordPress上传的文件尺寸超过php.ini中定义的upload_max_filesize值解决方法

    WordPress上传主题包时,提示“上传的文件尺寸超过 PHP.ini 中定义的 upload_max_filesize 值”。...问题原因是php.ini文件里限制了最大上传文件大小,默认为2MB,解决方法找到这个文件按照下文方法稍微修改一下即可。...1、一般来说VPS服务器的话,就是找到php.ini这个文件,然后修改里面几个参数即可。...php.ini的路径的话,大家可以通过命令:find / -name php.ini 来找到php.ini的路径 2、找到php.ini这个文件后, 3、在线、或者使用文本、sublime Text等程序打开...在这里说明下,upload_max_filesize表示所上传的文件的最大值,post_max_size表示通过POST提交数据的最大值。通常来说后者比前者要大,会比较合适些。

    2.9K80
    领券