• VBA实现全文件快速替换


    大家对于VBA处理文本文件并不陌生,Open打开文件,Line Input逐行读取处理,然后再使用Print写入到目标文件,整个过程并不复杂,但是如果源文件数据行数较多,那么逐行读取将花费较多的时间。

    Sub demo()
        FN1 = FreeFile
        Open OutFile For Output As FN1
        FN2 = FreeFile
        Open InFile For Input As FN2
        Do Until EOF(1)
            Line Input #1, textline
            '数据处理代码
            Print FN2, textline
        Loop
        Close FN2
        Close FN1
    End Sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    VBA内置的打开文本文件的方法,并无法实现读取全部文件内容,借助FileSystemObject可以实现一次性快速替换。
    示例代码如下

    Sub ReplaceTxt()
        strSrcFile = "C:\temp\test.txt"
        strOldTxt = "c:\111\"
        strNewTxt = "d:\333\"
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set objRead = fso.OpenTextFile(strSrcFile, 1)
        strIn = objRead.readall
        objRead.Close
        Set objWrite = fso.CreateTextFile(strSrcFile)
        objWrite.WriteLine Replace(strIn, strOldTxt, strNewTxt)
        objWrite.Close
        set fso = Nothing
    End Sub
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    【代码解析】
    第2行代码指定源文件。
    第3行代码指定查找的字符串。
    第4行代码指定新字符串。
    第5行代码创建FSO对象。
    第6行代码打开源文件。
    第7行调用readall方法读取全部文件内容,保存在变量strIn中。
    第8行代码关闭源文件。
    第9行代码创建目标文件。
    第10行代码调用Replace函数实现全文替换,并将结果写入目标文件中。
    第11行代码关闭目标文件。
    第12代码实现对象变量占用的系统资源。

  • 相关阅读:
    ubuntu安装配置mysql
    【微信小程序开发】微信小程序、大前端之flex布局方式详细解析
    【分享】“MySQL“在集简云平台集成应用的常见问题与解决方案
    若依vue ruoyi-vue ant design版本使用
    JAVA学习进程、线程
    vue实战-路由传递参数
    07-垃圾收集算法详解
    SpringBoot
    vue render 函数自定义事件
    Unity中Shader反射环境
  • 原文地址:https://blog.csdn.net/taller_2000/article/details/127646612