VBA提高篇_12 文本文件逐行读取,输入输出操作自如

news2024/11/17 12:21:41

文章目录

    • 一、VBA打开文本文件的4步操作
    • 二、文本输入Excel示例
    • 三、 Excel输出文本示例
      • 3.1 Open For Output
      • 3.2 Open For Append
      • 3.3 Print 打印文件
      • 3.4 工作簿 循环工作表 循环输出文件
    • 四 、先输入后输出 Demo实战演练

一、VBA打开文本文件的4步操作

在这里插入图片描述

  1. 打开文本文件
  • 找到指定文件并调入内存
打开指定文件 Open

Open   "文件详细路径"  	 For    Input/Output    As   #1
打开   指定文件		为了	输入 / 输出  	代号  1	
  1. 读取一行内容
  • 将每行视作一个字符串
Line    Input   #1,  s
读取一   输入	1号	作为字符串
行文本		   文件 保存到s中

vba的顺序读写模式:

  • 每执行一次Line input ,
  • 就自动向下读取新的一行,
  • 不能向回读取已经读取过的内容
Do While 尚未到达文件末尾
	Line Input #1,s
	Cell(i,1) = s
	i = i + 1
Loop
  1. 是否已到末尾?
  • 如果是末尾就不再读取
EOF 是 End of File 的缩写
EOF(n) = True/False 判断代号n是否读到了文件末尾

用逻辑变量做判断 False 可以直接写成Not EOF,True 直接写成Not EOF,具体看后边示例

4.关闭文件文件

  • 保存文件,清理内存
Close #1
'不关闭文件,则之前写入的数据可能无法真正保存到该文件中

二、文本输入Excel示例

Sub  readText()
     Open   "D:\demo\客户信息.txt"  For Input/Output   As  #1
     i = 1
     Do While  Not EOF(1)   '尚未到达文件末尾
   		Line Input #1,s
   		
   		If Left(s,2) ="北京" Then  ' 判断以北京开头的每行操作/否则不操作
   			Cell(i,1) = s
   			i = i + 1
   		End If
     Loop
   
   Close #1

End Sub

三、 Excel输出文本示例

3.1 Open For Output

打开指定文件并向其中写入数据
如果已经有同名文件,则将其内容全部清空覆盖
如果当前硬盘上没有这个文件,就新建此文件

3.2 Open For Append

打开指定文件并向其中 <<追加>> 数据
如果已经有同名文件,则保留其内容,并<<追加>>写入
如果当前硬盘上没有这个文件,就新建此文件

3.3 Print 打印文件

Sub WriteText()
    Dim i As Integer
    Open "d:\部门名单-1.txt" For Output As #1
    
    Print #1, Trim(Cells(3, 2)); '末尾有分号代表输出不换行
    Print #1, Trim(Cells(3, 3))  '末尾空白代表输出默认换行
    Print #1, Trim(Cells(4, 2))
    Print #1, Trim(Cells(4, 3))
    
    Close #1  '不关闭文件,则之前写入的数据可能无法真正保存到该文件中
End Sub

3.4 工作簿 循环工作表 循环输出文件

Sub writeTxt()
    Dim s As String, i As Long
    Dim w As Worksheet
    
    '打开指定文件(若无此文件则创建)。若已经存在该文件,
    '则之前内容全部清除。改为 For Append 可保留之前内容。
    Open "d:\demo\部门名单汇总.txt" For Output As #1
    
    '扫描每一张工作表
    For Each w In Worksheets
    
    '每张工作表从第3行开始扫描每一行
        i = 3
    
        Do While Trim(w.Cells(i, 2)) <> ""
        
        '将每一行的B列和C列内容写入文本文件,中间用一个破折号隔开
        '三个字符串之间是分号隔开,所以输出在同一行。而最后一个字符
        '后面没有任何符号,所以下一次执行Print时将换行输出。
         
            Print #1, w.Cells(i, 2); "--"; w.Cells(i, 3)
            
            i = i + 1
        Loop
    Next w

    '关闭文件,非常重要!否则可能造成数据丢失!
    Close #1

End Sub

四 、先输入后输出 Demo实战演练

Sub readAndWrite()
    Dim s As String
    '1.0读取
    '打开文件
    Open "d:\残本1.txt" For Input As #1
    Open "d:\残本2.txt" For Input As #2
   
    
    i = 3
     '读取文件
    ' #1和 #2是否末尾
    Do While Not EOF(1) Or Not EOF(2)
        If (i And 1) = 1 Then Line Input #1, s
        If (i And 1) = 0 Then Line Input #2, s
    
        Cells(i, 2) = s
        i = i + 1
    Loop
    
    '关闭文件
    Close #1, #2
    
    '2.0写出
    i = 3
    Open "d:\残本3.txt" For Output As #3
    
    Do While Cells(i, 2) <> ""
        s = Cells(i, 2).Value
        Print #3, s
        i = i + 1
    Loop
    
    Close #3
End Sub



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192477.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

看这篇就够了——ubuntu扩展屏幕及装显卡驱动后黑屏问题

1.问题说明首先说明为什么外接屏幕需要装显卡驱动&#xff0c;显卡由GPU和显存构成&#xff0c;又称为显示适配器&#xff0c;与数据的输出有密切关系。在ubuntu系统中&#xff0c;外接显示器是用的独立显卡驱动&#xff0c;而内置屏幕用的是集显驱动,也正是因为调用显卡的不同…

Day01-数据分析图鉴

文章目录Day01-数据分析图鉴一、 数据分析是什么&#xff1f;二、为什么数据分析这么火&#xff1f;三、数据分析的行业现状如何&#xff1f;四、对工作经验要求高吗&#xff1f;五、工资情况六、学完数据分析的效果&#xff1f;1、Python可视化2、TableauDay01-数据分析图鉴 …

Maven打包时出现Process terminated错误

Maven打包时出现Process terminated错误检查maven的配置文件多引入了一次控制器编码错误切点表达式错误用maven打包时出现Process terminated样式的错误&#xff0c;报错如下&#xff1a;查看报错信息 检查maven的配置文件 多引入了一次控制器 注释掉多余的 编码错误 File e…

软件设计质量(一)容错设计

出现非预期错误的原因解决方案原理介绍断根原理原理&#xff1a;将可能造成人错误的原因/条件从根本上排除断绝掉。通过冗余设计&#xff0c;屏蔽掉其中9种错误的方式&#xff1b;案例&#xff1a;USB的SD卡防写开关。4种可能性断根设计为只有1种可能是正确的。软件设计&#x…

【JavaEE初阶】第十节.多线程 (基础篇 ) 线程池(案例四)

文章目录 前言 一、线程池概述 二、线程池的使用方式 2.1 Java标准库中 线程池的使用 2.2 自己动手来模拟实现一个线程池 总结 前言 本篇文章将介绍多线程案例 —— 线程池&#xff0c;这也是一个非常有用的案例 在之前已经介绍过&#xff0c;进程本身已经能做到并发编…

HTTP错误响应码

4XX客户端错误 400 bad request 服务端认为客户端出现了错误&#xff0c;但是不能准确判断是哪种错误401 用户认证信息缺失或者不准确403 服务器理解请求&#xff0c;但是没有权限处理404 not found 服务器没有找到资源405 method not allowed 服务器不支持请求中的method方法…

VSCode加上dotnet7.0来创建开发,vs和vscode创建方法,命令创建和扩展方法创建区别,以及扩展推荐

吐槽一波&#xff1a; .net7出来第二天开始学习&#xff0c;前端vue3ts写法也得学 总监让熟悉一个星期新版本语言就动手开发&#xff0c;还要写前端&#xff0c;再带一个应届生开发&#xff0c;前端跑了我还得顶上&#xff0c; 天天催&#xff0c;天天问我进度怎么样&#xff0…

使用nginx给Nacos集群配置负载均衡

使用nginx的upstream模块进行负载第一、不想要加访问路径配置首先配置的时候需要把nacos配置的访问路径删除vim application.properties重新启动nacos 三个节点都配置一样的vim /etc/nginx/conf.d/default.conf 然后编写nginx的配置文件Nginx服务器ip 192.168.11.154upstream n…

SimCLS: A Simple Framework forContrastive Learning of Abstractive Summarization

论文 代码 摘要 本文提出了一个概念上简单但是强大的抽象摘要框架&#xff0c;SimCLS。它通过对比学习的方式&#xff0c;缓解了Seq2Seq框架固有的目标函数和评价指标不一致的问题&#xff0c;从而可以从模型生成的候选摘要中筛选出真实的评价指标(ROUGE)打分更高的摘要。将…

2023 中科院《国际期刊预警名单》发布,28 本学术期刊有风险,2区期刊14本,有哪些信息值得关注?

2023年1月31日&#xff0c;中国科学院文献情报中心终于发布了2023年《国际期刊预警名单&#xff08;试行&#xff09;》&#xff01; 名单分析&#xff1a; 与往年相比&#xff0c;今年的预警期刊名单变动还是相当大的 1. 生物学和数学期刊全部“洗白”&#xff0c;医学期刊…

Docker 安装可视化管理工具Portainer

简介Portainer是Docker 的图形化管理工具&#xff0c;提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理…

测试工程师笔试题整理01

来源&#xff1a; https://vt.quark.cn/blm/quark-doc-ssr-293/preview?idC2946438A278541B6C1284E5C22269AB 难度&#xff1a;⭐&#xff08;简单&#xff09; 一、基础题 1、对于软件测试描述正确的是 (目的是尽可能多的发现程序的错误)(2) 2、软件测试的对象包括(源程序…

解析Linux DMA mapping机制

说明&#xff1a; Kernel版本&#xff1a;4.14ARM64处理器&#xff0c;Contex-A53&#xff0c;双核使用工具&#xff1a;Source Insight 3.5&#xff0c; Visio 1. 概述 DMA&#xff08;Direct Memory Access&#xff09;&#xff1a;直接存储器访问&#xff1b;先看问题的引入…

OpenWrt之IPTV双线融合教程

文章目录前言OpenWrt版本1. 让路由与光猫互通2. 设置Vlan3. 配置接口4. 配置路由表5. 播放测试后话前言 前段时间开始, 电信就开始整理单播源传播的乱象, 就限制了非内网无法打开直播源, 于是只能搞搞双线融合了, 让我的RTSP源重新焕发生机 OpenWrt版本 22.02 1. 让路由与光猫…

【docker概念和实践 5】(1) 容器数据卷

一、说明 本文的主要内容 什么是数据卷如何生成数据卷将数据卷挂在容器上多容器如何共享数据卷什么是绑定挂载二、数据卷概念 2.1 数据长久保存的要求 在容器运行时&#xff0c;容器内有一个数据存储空间&#xff0c;但是当容器关闭后&#xff0c;这个存储空间内容将被丢失&…

PYTHON官方教程:Python3.11中文版文档

Python 每年都会发布新版本&#xff0c;上半年是功能锁定的测试版&#xff0c;年底是最终版本。 Python 3.11 的特性集刚刚定稿&#xff0c;测试版本已经发布&#xff0c;开发人员在非生产代码上可以尝试使用这个最新版本&#xff0c;验证它能否在你的程序中工作&#xff0c;并…

小白入门pwn笔记--elf文件概述

笔记是根据哔哩哔哩视频所写2、ELF文件概述_哔哩哔哩_bilibili第一集看过大概&#xff0c;很久之前安装过一些工具&#xff0c;所以直接从第二集开始看&#xff0c;遇到没有安装的工具再安装。从今天开始入坑pwn0.pwn的简单介绍exploit&#xff1a;用于攻击的脚本与方案。paylo…

一、代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

数组基础理论数组是存放在连续内存空间上的相同类型数据的集合。数组下标都是从0开始的。数组内存空间的地址是连续的正是因为数组的在内存空间的地址是连续的&#xff0c;所以我们在删除或者增添元素的时候&#xff0c;就难免要移动其他元素的地址。数组的元素是不能删的&…

关于CADC数据集的处理笔记

简要介绍 数据集 Canadian Adverse Driving Conditions Dataset&#xff08;CADC&#xff09;是全球首个针对寒冷环境的自动驾驶数据集&#xff0c;其内包含&#xff1a; 56,000 张相机图像&#xff1b;7,000 次 LiDAR 扫描&#xff1b;75 个场景&#xff0c;每个场景 50-100…

Vue中作用域插槽solt详解

作用域插槽插槽可以实现父子组件通信(通信的结构)默认插槽具名插槽作用域插槽:子组件的数据来源于父组件,子组件是决定不了自身结构与外观的直接上代码&#xff01;&#xff01;父组件&#xff1a;<template><div><h2>效果一: 显示TODO列表时, 已完成的TODO为…