VBA 将 excel 单元格数据导出到 .txt 文件中
Posted
技术标签:
【中文标题】VBA 将 excel 单元格数据导出到 .txt 文件中【英文标题】:VBA to export excel cell data into .txt files 【发布时间】:2021-04-15 17:50:19 【问题描述】:我有一个 Excel 电子表格,它在 C 列的单元格中包含一些长文本,大约为400 行。
您可以在这里看到一个示例: Dummy data example
我想做的是将 C 列的每个单元格中的数据提取到它自己的 .txt 文件中。 每个 .txt 文件的文件名将由其他列中的数据组成,格式类似于 Chris_17-08-2021,其中 Chris = D 列的名称,日期从 B 列提取。
我对在其他网站上看到的 VBA 代码完全迷失了。任何帮助都将不胜感激 - 即使将我指向正确的资源方向。
提前致谢:D
【问题讨论】:
数据是日期还是文本? 我想要的.txt文件中的数据是文本。我希望与文本关联的日期构成 .txt 文档名称的一部分。B
(标题下方)列中的数据是日期还是文本?
日期格式
【参考方案1】:
将单元格内容导出到文本文件
调整常量部分中的值 如果目标文件夹 (dFolderPath
) 不存在,则会创建它。
我已选择使用位于ThisWorkbook
(包含此代码的工作簿)文件夹中的目标文件夹(dFolderName
)。如有必要,您可以对其进行硬编码,例如dFolderPath = "C:\Test\"
当您不再需要 dFolderName
时。 注意:不要忘记尾部的反斜杠 (\
)。
每次运行代码时,文件都会被覆盖(无需确认)。
Option Explicit
Sub exportData()
Const sName As String = "Sheet1"
Const dFolderName As String = "Text Files"
Dim wb As Workbook: Set wb = ThisWorkbook
Dim ws As Worksheet: Set ws = wb.Worksheets(sName)
Dim rg As Range: Set rg = ws.Range("A1").CurrentRegion.Resize(, 4)
Dim Data As Variant: Data = rg.Resize(rg.Rows.Count - 1).Offset(1).Value
Dim dFolderPath As String:
dFolderPath = ThisWorkbook.Path & "\" & dFolderName & "\"
On Error Resume Next
MkDir dFolderPath
On Error GoTo 0
Dim Num As Long: Num = FreeFile()
Dim r As Long
Dim dFileName As String
For r = 1 To UBound(Data, 1)
dFileName = Data(r, 4) & "_" & Format(Data(r, 2), "dd-mm-yyyy") & ".txt"
Open dFolderPath & dFileName For Output As #Num
Print #Num, Data(r, 3)
Close #Num
Next r
End Sub
【讨论】:
以上是关于VBA 将 excel 单元格数据导出到 .txt 文件中的主要内容,如果未能解决你的问题,请参考以下文章
Office表中如何把一定范围单元格的内容多列数据去除空值以TXT文本方式导出?