如何从 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
我正在尝试将我的 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