Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA代码:将Excel保存为文本文件的几段代码

VBA代码:将Excel保存为文本文件的几段代码

作者头像
fanjy
发布于 2024-01-02 09:47:45
发布于 2024-01-02 09:47:45
46500
代码可运行
举报
文章被收录于专栏:完美Excel完美Excel
运行总次数:0
代码可运行

标签:VBA

下面的代码将输出一个名为“Test.txt”的文本文件,其中包含常量delimiter中指定的任何分隔符(在本示例中为管道符号)。注意,它可以是多个字符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public Sub CharacterSV()
 Const DELIMITER As String = "|"
 Dim myRecord As Range
 Dim myField As Range
 Dim nFileNum As Long
 Dim sOut As String
 
 nFileNum = FreeFile
 Open "Test.txt" For Output As #nFileNum
 For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
   With myRecord
     For Each myField In Range(.Cells, Cells(.Row, Columns.Count).End(xlToLeft))
       sOut = sOut & DELIMITER & myField.Text
     Next myField
     Print #nFileNum, Mid(sOut, 2)
     sOut = Empty
   End With
 Next myRecord
 Close #nFileNum
End Sub

下面的代码导出的文件每个字段周围都有引号。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public Sub OutputQuotedCSV()
 Const QSTR As String = """"
 Dim myRecord As Range
 Dim myField As Range
 Dim nFileNum As Long
 Dim sOut As String
 
 nFileNum = FreeFile
 Open "File1.txt" For Output As #nFileNum
 For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
   With myRecord
     For Each myField In Range(.Cells(1), Cells(.Row, Columns.Count).End(xlToLeft))
       sOut = sOut & "," & QSTR & Replace(myField.Text, QSTR, QSTR & QSTR) & QSTR
     Next myField
     Print #nFileNum, Mid(sOut, 2)
     sOut = Empty
   End With
 Next myRecord
 Close #nFileNum
End Sub

下面的代码输出的文本文件不会对引号中有逗号或文本中有双引号的单元格进行修改(注:使用Excel自身功能导出时,会对单元格中包含逗号的内容或者含有双引号的单元格内容自动添加双引号):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public Sub TextNoModification()
 Const DELIMITER As String = "," '或者"|", vbTab,.
 Dim myRecord As Range
 Dim myField As Range
 Dim nFileNum As Long
 Dim sOut As String
 
 nFileNum = FreeFile
 Open "Test.txt" For Output As #nFileNum
 For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
   With myRecord
     For Each myField In Range(.Cells(1), Cells(.Row, Columns.Count).End(xlToLeft))
       sOut = sOut & DELIMITER & myField.Text
     Next myField
     Print #nFileNum, Mid(sOut, 2)
     sOut = Empty
   End With
 Next myRecord
 Close #nFileNum
End Sub

有时应用程序需要具有固定宽度字段的输入文件。例如,每个记录可以由一行组成,字段1由20个字符组成,从字符1开始;字段2由10个字符组成,从字符21开始,等等。无论字段中有多少个字符的数据,字段宽度都是恒定的。少于所需字符数的字段必须用空格或其他字符填充。下面的代码将生成一个具有固定字段的文本文件。字段宽度包含在vFieldArray中。通常没有分隔符,但代码允许使用分隔符。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public Sub FixedFieldTextFile()
 Const DELIMITER As String = "" '通常不包含分隔符
 Const PAD As String = " "   '或其他字符
 Dim vFieldArray As Variant
 Dim myRecord As Range
 Dim nFileNum As Long
 Dim i As Long
 Dim sOut As String
 
 'vFieldArray包含字段长度, 以字符为单位, 从字段1N
 vFieldArray = Array(20, 10, 15, 4)
 nFileNum = FreeFile
 Open "Test.txt" For Output As #nFileNum
 For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row)
   With myRecord
     For i = 0 To UBound(vFieldArray)
       sOut = sOut & DELIMITER & Left(.Offset(0, i).Text & String(vFieldArray(i), PAD), vFieldArray(i))
     Next i
     Print #nFileNum, Mid(sOut, Len(DELIMITER) + 1)
     sOut = Empty
   End With
 Next myRecord
 Close #nFileNum
End Sub

注:本文的代码整理自mcgimpsey.com,供参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
VBA代码:将多个文本文件合并到当前工作表
下面分享在vbaexpress.com中收集的几段代码,用于合并文本文件并将其放置在当前工作表中。
fanjy
2024/06/04
2950
VBA代码:将多个文本文件合并到当前工作表
VBA EXCEL 转 TXT 文本文件
在日常工作中,我们很多时候都会用到TXT,XML,JSON等文件作为数据储存介质,方便我们导进系统,数据库等;今天开号第一天先来一个Excel转TXT文件文件,VBA小源码!希望对你们工作有所帮助!!
办公魔盒
2019/07/22
2.4K0
VBA示例:查找并分别列出找到的所有值
如下图1所示,有一系列数据,其中Yl代表“Yellow”,Re代表“Red”,Bl代表“Blue”,Gr代表“Green”。
fanjy
2024/06/04
4610
VBA示例:查找并分别列出找到的所有值
Excel VBA之Range对象
Cells(1,Columns.Count).End(xlToLeft).Column
哆哆Excel
2022/10/25
1.7K0
合并/拆分 Excel?Python、VBA轻松自动化
当你收集了 n 个人的 EXCEL 记录表,需要将它们汇成一个总表时你会怎么做呢? 如果不通过技术手段,要一个个打开再复制粘贴也太麻烦了吧! 此时就需要一个通过几秒钟的点击就能完成合并的工具。
朱小五
2020/10/09
2.5K0
合并/拆分 Excel?Python、VBA轻松自动化
ExcelVBA End属性查找”最后”的单元格
'等同于按键 (End+向上键、End+向下键、End+向左键、End+向右键),或者CTRL+上下左右
哆哆Excel
2022/10/25
1.7K0
ExcelVBA End属性查找”最后”的单元格
Excel应用实践22: 比较并合并工作表
有两个工作表,均含有相同的数据,但最后一列名称和产品的数量不同,如下图1和图2所示。
fanjy
2019/10/22
7740
Excel应用实践22: 比较并合并工作表
Python对比VBA实现excel表格合并与拆分
日常工作中经常需要对一系列的表进行合并,或者对一份数据按照某个分类进行拆分,今天我们介绍Python和VBA两种实现方案供大家参考~
可以叫我才哥
2021/08/05
3.2K0
VBA实战技巧01: 在代码中引用动态调整单元格区域的5种方法
在VBA代码中,经常要引用单元格数据区域并对其进行操作。然而,如果对数据区域采用“硬编码”地址,那么当该区域大小变化时,必须修改相应的引用该区域的代码。本文整理了可以动态引用数据区域的5种方法,供编写代码时参考。
fanjy
2020/02/12
5K0
删除多行多列中的空单元格并重新整理数据
这是在www.vbaexpress.com中看到的一个示例,个人觉得代码很有代表性,特辑录于此,与大家共享。
fanjy
2024/05/13
4110
删除多行多列中的空单元格并重新整理数据
VBA实战技巧34:使用VBA组织图形1
引言:本文的代码整理自mrexcel.com,一个很好的令人兴奋的示例,有兴趣的朋友可以仔细研究。
fanjy
2021/09/22
1.7K0
VBA实战技巧35:使用VBA组织图形2
引言:本文的代码与昨天发表的《VBA实战技巧34:使用VBA组织图形1》一样,都整理自mrexcel.com,一个很好的令人兴奋的示例,有兴趣的朋友可以仔细研究。
fanjy
2021/09/22
1.8K0
Excel应用实践14:合并多个工作簿中的数据—示例3
要合并工作簿的情形有许多种,但最终的目的只有一条,将繁锁的手工操作自动化,让程序快速帮助我们完成这些重复的工作。
fanjy
2019/07/19
1.7K0
一小时搞定 简单VBA编程 Excel宏编程快速扫盲
Excel宏编程可以快速完成批量表格操作:复制粘贴、数据过滤等,宏代码基于VB语言实现,有基础的编程经验就能快速阅读。下面是我的学习笔记。
全栈程序员站长
2022/08/10
1.9K0
Excel VBA之Find
使用,因为我们的工作表中常常在最后会写一此“备注”,我们在取数据的时候,备注与后面的东西是没用的,所以我们要取到备注以上的东西,以"金额合计"或“合计”为最后一行号
哆哆Excel
2022/10/25
2.3K0
文件操作——举例
我们前面提到过,并没有直接创建文件的功能,但是在写入1个不存在的文件的时候,程序是可以自动创建文件的,所以只需要把写入文件的功能中的写入操作省略掉,就仅仅是创建1个空文件了。
xyj
2020/07/28
6740
导入文本(txt文件)的VBA代码
fileName = Application.GetOpenFilename("Excel 文件 (*.txt),*.txt")
但老师
2022/03/22
2.2K0
导入文本(txt文件)的VBA代码
Excel VBA解读(161): 数据结构—字典对象操作示例
在前面的讲解中,我们添加到字典中的元素都是一个键对应着一个值,如果我们想要在字典对应的每个键中存储多个值,该怎样做呢?
fanjy
2019/09/03
2.1K0
Excel VBA解读(161): 数据结构—字典对象操作示例
VBA字典(详解,示例)「建议收藏」
如果对上面水果种类进行计数:countifs,只需要将分类汇总的值改为数值1即可,每出现一次‘+1’
全栈程序员站长
2022/07/22
6.5K1
VBA字典(详解,示例)「建议收藏」
VBA:正则表达式(8) -重复字符的分组
需求:数据保存在A列,需要将其中的重复字符分拆后保存在后续的列中,这里只考虑小写英文字符。
Exploring
2023/10/05
6480
VBA:正则表达式(8) -重复字符的分组
相关推荐
VBA代码:将多个文本文件合并到当前工作表
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验