【问题标题】:VBA to export excel cell data into .txt filesVBA 将 excel 单元格数据导出到 .txt 文件中
【发布时间】: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(标题下方)列中的数据是日期还是文本?
  • 日期格式

标签: excel vba text


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多