将Excel工作表导出为文本文件是一种常见的需求,它允许数据以一种简单、通用的格式被保存和共享。常用的导出方法有以下两种:(1)直接复制黏贴。选中Excel工作表区域,并复制黏贴到文本文件。此时,行单元格之间以Tab键分割开;(2)使用Excel自带的“另存为”功能。另存为“CSV (逗号分隔)”的文本文件格式。顾名思义,行单元格之间以逗号分割开。
这两种导出方法虽然可以满足一定的需求,但还有一定的局限性。因此,我们可以利用VBA,以应对一些更复杂、更多样的导出场景:(1)为行单元格之间的分隔符提供了更大的弹性,可以使用逗号、Tab键、甚至是任何字符;(2)实现将Excel工作表导出为文本文件的全流程自动化。
Excel工作表数据
实现思路1.创建文本文件;
2.将工作表每一行的数据,用连接符拼接起来;
3.将拼接后的每一行数据写入文本文件。
导出到文本文件的效果
VBA代码Sub导出Excel为文本文件()
'创建FileSystemObject对象
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
'指定文件路径和名称
Dim filePath As String
filePath = "C:\Users\VBAMatrix\Desktop\newfile.txt"
'创建新文本文件,参数为True,即文件存在则覆盖
Dim file As Object
Set file = fso.CreateTextFile(filePath, True)
Dim fistRow As Integer, lastRow As Integer
firstRow = ActiveSheet.UsedRange.Row
lastRow = firstRow + ActiveSheet.UsedRange.Rows.Count - 1
Dim firstColumn As Integer, lastColumn As Integer
firstColumn = ActiveSheet.UsedRange.Column
lastColumn = firstColumn + ActiveSheet.UsedRange.Columns.Count - 1
Dim i As Integer, j As Integer
Dim txtwd As String
'循环遍历当前工作表的每一行
For i = firstRow To lastRow
txtwd = ""
For j = firstColumn To lastColumn
'行区域的单元格之间以逗号进行分割
txtwd = txtwd & ActiveSheet.Cells(i, j).Value & ","
Next
'将连接后的行数据,写入文本文件中
file.WriteLine (Left(txtwd, Len(txtwd) - 1))
Next
'关闭文件
file.Close
'释放资源
Set file = Nothing
Set fso = Nothing
End Sub
推荐阅读利用Excel函数填充财务报表项目对应的附注序号
利用VBA获取指定文件类型的详细信息
利用VBA操作Excel名称管理器
利用VBA在Excel批量插入图片批注
利用VBA批量转换xls文件格式的工作簿