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 文件中的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA 如何把单元格中的多行文字输出到txt中

Office表中如何把一定范围单元格的内容多列数据去除空值以TXT文本方式导出?

easyexcel合并单元格导出内存溢出

将特定单元格从 Excel 导出到 MS Access

如何在Excel表格中将系统导出的部门的代码,用公式或者vba转换成文字?

Excel VBA将单元格数据保存到单独的工作表