【问题标题】:Create text files from data rows in Excel从 Excel 中的数据行创建文本文件
【发布时间】:2014-06-16 21:24:44
【问题描述】:

我在 Excel 中有一个包含 450 行左右的源电子表格。每行有 6 列数据,我需要从每一行创建一个单独的文件,文件名 = A 列,内容 = B-G 列,它们之间有一个换行符。

例如,我正在尝试此操作,但收到错误“找不到文件”:

Sub DataDump()

Dim X
Dim lngRow As Long
Dim StrFolder As String

StrFolder = "/Users/danielfowler/Documents/_users_text_6.16"
X = Range([a1], Cells(Rows.Count, 2).End(xlUp))
For lngRow = 1 To UBound(X)
  Open StrFolder & "\" & X(lngRow, 1) & ".txt" For Output As #1
  Write #1, X(lngRow, 2)
  Close #1
Next
End Sub

我在 StackOverflow 上已经看到了六个这样的问题...

但是这些解决方案中的每一个都会为我返回不同的错误。我正在使用 Excel for Mac 2011,v14.4.2。

【问题讨论】:

  • Brett 在您最后一个链接问题中的回答应该可以在 Mac 上运行。 FilesystemObject 仅适用于 Windows。
  • 插入文件路径后出现“找不到路径”错误。
  • @TimWilliams 也许我只是不知道如何在 Mac 上使用文件路径...我输入了 StrFolder = "/Users/danielfowler/Documents/" 但无济于事。我还尝试了 /Volumes/Macintosh HD/... 并使所有正斜杠反斜杠。我现在得到的错误是“找不到文件”
  • 检查 Application.PathSeparator - 在 Mac 上这是 : vs 在 Windows 上是 `\`
  • @TimWilliams 结果相同。

标签: vba excel excel-2011


【解决方案1】:
Sub VBA_Print_to_a_text_file()
    Dim strFile_Path As String
    strFile_Path = "C:\temp\test.txt" ‘Change as per your test folder path
    Open strFile_Path For Output As #1
    Print #1, "This is my sample text"
    Close #1
End Sub 

【讨论】:

  • 如果这是一个答案,请添加更多详细信息来解释代码
【解决方案2】:

这会为每一行输出一个文本文件,其中 A 列作为标题,B 列作为每个文件的内容到最后一列。您可以将目录更改为您想要的任何目录,但目前它将文本文件保存到与 Excel 文件相同的目录中。您还可以将文件扩展名更改为您想要的任何内容。

Sub toFile()

    Dim FilePath As String, CellData As String, LastCol As Long, LastRow As Long
    Dim Filenum As Integer

    LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
    LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

    For i = 1 To LastRow
        FilePath = Application.DefaultFilePath & "\" & Trim(ActiveSheet.Cells(i, 1).Value) & ".xpd"
        Filenum = FreeFile

        Open FilePath For Output As Filenum
        CellData = ""

        For j = 2 To LastCol
        CellData = Trim(ActiveSheet.Cells(i, j).Value)
        Write #Filenum, CellData

        Next j

        Close #Filenum

    Next i
    MsgBox ("Done")
End Sub

至于每行之间的中断,不幸的是我没有足够的经验知道如何做到这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多