我需要帮助在名为“工作表”的excel电子表格中的每一行创建单独的文本文件。我希望文本文件以列A的内容命名,列BG是内容,最好在文本文件的每一列之间有一个双硬回车,所以每列之间都有一个空行。
这可能吗?我该怎么做呢谢谢!
答案 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次。
哔哔'发出声音。