如何从 Excel 中获取所有列的内容到文本文件中?

How to get content from all columns into text file from Excel?

我正在尝试将我的 excel 数据导出到每一行的单独文本文件中。我已经查看了各种 SO 问题,并且可以获得每一行的工作结果,但无法从 B 列及以后的所有列中获取要填充的内容。这是我试过的。

这是来自 VBA 编程教程。它输出我所有的专栏,但只输出到一个文件:

Sub toXPD()

Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long

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

CellData = ""

FilePath = Application.DefaultFilePath & "\auth.csv"

Open FilePath For Output As #2

For i = 1 To LastRow

    For j = 1 To LastCol

        If j = LastCol Then
            CellData = CellData + Trim(ActiveCell(i, j).Value)
        Else
            CellData = CellData + Trim(ActiveCell(i, j).Value) + ","
        End If

    Next j

    Write #2, CellData
    CellData = ""

Next i

Close #2

MsgBox ("Done")

End Sub

我也从这个 SO 问题 Create text Files from every row in an Excel Spreadsheet 尝试过,它可以为每一行创建单独的文件,但只填充 B 列的内容,而不填充其他列的内容:

Sub savemyrowsastext()
Dim x

For Each cell In Sheet1.Range("A1:A" & Sheet1.UsedRange.Rows.Count)
' you can change the sheet1 to your own choice

    saveText = cell.Text

    Open "C:\wamp\www\GeoPC_NG\sogistate\igala_land\" & saveText & ".php" For Output As #1

    Print #1, cell.Offset(0, 1).Text

    Close #1

    Beep ' Sound a tone.

    Next x

Next cell
End Sub

我对 VBA/Macro 编码非常陌生,我认为这是一项简单的任务。我试图将第二组代码中缺少的内容与第一组代码中的片段拼凑在一起,但没有任何效果。我怎样才能让第二组代码包含所有具有值的列作为每个文本文件中的内容?

编辑:根据@Kumarapush 的附加回答 内容确实在不同的行上打印,但输出是这样的。

"columnB"
"columnBcolumnC"
"columnBcolumnCcolumnD"

编辑 2:这是遇到此问题的任何其他人的完整工作代码。它将 B 列向前的所有列打印为 txt 文件的内容,并将 A 列打印为每个文件的标题。感谢@Kumarapush

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

我修改了您的第一个示例代码中的几行。它只是错过了一些逻辑。它不是写入不同的文件,而是继续写入同一个文件。

试试下面的代码。我已经对其进行了测试,它将每一行的数据写入不同的 CSV 文件。

    Sub toXPD()

        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 & "\auth" & i & ".csv"
            Filenum = FreeFile

            Open FilePath For Output As Filenum
            CellData = ""

            For j = 1 To LastCol
                If j = LastCol Then
                    CellData = CellData + Trim(ActiveSheet.Cells(i, j).Value)
                Else
                    CellData = CellData + Trim(ActiveSheet.Cells(i, j).Value) + ","
                End If
            Next j

            Write #Filenum, CellData
            Close #Filenum

        Next i
        MsgBox ("Done")
    End Sub

正在回复根据您的评论要求的修改。即,要将每一列数据写入输出文件中的单独行: 没问题史蒂夫。替换此代码

    For j = 1 To LastCol
        If j = LastCol Then
            CellData = CellData + Trim(ActiveSheet.Cells(i, j).Value)
        Else
            CellData = CellData + Trim(ActiveSheet.Cells(i, j).Value) + ","
        End If
    Next j
    Write #Filenum, CellData

有了这个

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