从Excel电子表格中的每一行创建文本文件

时间:2012-10-25 21:40:16

标签: excel file text rows

我需要帮助在名为“工作表”的excel电子表格中的每一行创建单独的文本文件。我希望文本文件以列A的内容命名,列BG是内容,最好在文本文件的每一列之间有一个双硬回车,所以每列之间都有一个空行。

这可能吗?我该怎么做呢谢谢!

4 个答案:

答案 0 :(得分:3)

附加的VBA宏将执行此操作,将txt文件保存在C:\ Temp \

Sub WriteTotxt()

Const forReading = 1, forAppending = 3, fsoForWriting = 2
Dim fs, objTextStream, sText As String
Dim lLastRow As Long, lRowLoop As Long, lLastCol As Long, lColLoop As Long

lLastRow = Cells(Rows.Count, 1).End(xlUp).Row

For lRowLoop = 1 To lLastRow

    Set fs = CreateObject("Scripting.FileSystemObject")
    Set objTextStream = fs.opentextfile("c:\temp\" & Cells(lRowLoop, 1) & ".txt", fsoForWriting, True)

    sText = ""

    For lColLoop = 1 To 7
        sText = sText & Cells(lRowLoop, lColLoop) & Chr(10) & Chr(10)
    Next lColLoop

    objTextStream.writeline (Left(sText, Len(sText) - 1))


    objTextStream.Close
    Set objTextStream = Nothing
    Set fs = Nothing

Next lRowLoop

End Sub

答案 1 :(得分:2)

@ nutsch的答案非常好,99.9%的时间都应该有效。在FSO不可用的极少数情况下,这是一个没有依赖关系的版本。因此,它确实要求源工作表在内容部分中没有任何空行。

Sub SaveRowsAsCSV()

Dim wb As Excel.Workbook, wbNew As Excel.Workbook
Dim wsSource As Excel.Worksheet, wsTemp As Excel.Worksheet
Dim r As Long, c As Long

    Set wsSource = ThisWorkbook.Worksheets("worksheet")

    Application.DisplayAlerts = False 'will overwrite existing files without asking

    r = 1
    Do Until Len(Trim(wsSource.Cells(r, 1).Value)) = 0
        ThisWorkbook.Worksheets.Add ThisWorkbook.Worksheets(1)
        Set wsTemp = ThisWorkbook.Worksheets(1)

        For c = 2 To 7
            wsTemp.Cells((c - 1) * 2 - 1, 1).Value = wsSource.Cells(r, c).Value
        Next c

        wsTemp.Move
        Set wbNew = ActiveWorkbook
        Set wsTemp = wbNew.Worksheets(1)
        'wbNew.SaveAs wsSource.Cells(r, 1).Value & ".csv", xlCSV 'old way
        wbNew.SaveAs "textfile" & r & ".csv", xlCSV 'new way
        'you can try other file formats listed at http://msdn.microsoft.com/en-us/library/office/aa194915(v=office.10).aspx
        wbNew.Close
        ThisWorkbook.Activate
        r = r + 1
    Loop

    Application.DisplayAlerts = True

End Sub

答案 2 :(得分:2)

为了别人的利益,我把问题排除在外。我用“Chr(13)& Chr(10)”取代了“Chr(10)& Chr(10)”,它完美地运作了。

答案 3 :(得分:2)

我使用下面的简单代码将excel行保存为文本文件或许多其他格式已经很长时间了,它一直对我有效。

Sub savemyrowsastext()
昏暗x

对于Sheet1.Range中的每个单元格(“A1:A”& Sheet1.UsedRange.Rows.Count)
'你可以将sheet1更改为你自己的选择
        saveText = cell.Text
          打开“C:\ wamp \ www \ GeoPC_NG \ sogistate \ igala_land \”& saveText& “.php”输出为#1
          打印#1,cell.Offset(0,1)。文本
          关闭#1
        对于x = 1到3'循环3次。
    哔哔'发出声音 下一个x
下一个细胞
结束Sub

注意:

 1.栏目A1 =文件标题
 2.列B1 =文件内容
 3.直到最后一行包含文本(即空行)

以相反的顺序,如果你想这样做;

 1.栏目A1 =文件标题
 2.列A2 =文件内容
 3.在包含文本的最后一行(即空行)之前,只需将 打印#1,cell.Offset(0,1).Text 更改为 打印#1,cell.Offset(1,0)。文本

我的文件夹位置= C:\ wamp \ www \ GeoPC_NG \ kogistate \ igala_land \
我的文件扩展名= .php,您可以将扩展名更改为您自己的选择(.txt,.htm& .csv等) 我在每次保存结束时都包含了双音,以了解我的工作是否正在进行中  昏暗x
对于x = 1到3'循环3次。
    哔哔'发出声音。