从Excel电子表格中的每一行创建文本文件
我需要帮助从excel电子表格中的每一行创建单独的文本文件,称为“工作表”。我希望文本文件以A列的内容命名,B-G列为内容,最好在文本文件的每列之间有一个双硬回车,这样每列之间都有一个空行从Excel电子表格中的每一行创建文本文件,excel,file,text,rows,Excel,File,Text,Rows,我需要帮助从excel电子表格中的每一行创建单独的文本文件,称为“工作表”。我希望文本文件以A列的内容命名,B-G列为内容,最好在文本文件的每列之间有一个双硬回车,这样每列之间都有一个空行 这可能吗?我该怎么办呢。谢谢 附加的VBA宏将执行此操作,并将txt文件保存在C:\Temp中\ Sub WriteTotxt() Const forReading = 1, forAppending = 3, fsoForWriting = 2 Dim fs, objTextStream, sText A
这可能吗?我该怎么办呢。谢谢 附加的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
@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
为了他人的利益,我把问题解决了。我将“Chr(10)&Chr(10)”替换为“Chr(13)&Chr(10)”,它工作得非常好。我使用下面的简单代码将excel行保存为文本文件或许多其他格式已有相当长的一段时间了,它一直适用于我。
子savemyrowsastext()
尺寸x
对于Sheet1.Range(“A1:A”和Sheet1.UsedRange.Rows.Count)中的每个单元格
'您可以将sheet1更改为您自己的选择
saveText=单元格。Text
打开“C:\wamp\www\GeoPC\u NG\sogistate\igala\u land\”&saveText&“.php”,输出为#1
打印#1,单元格。偏移量(0,1)。文本
关闭#1
对于x=1到3'循环3次。
“哔”的一声发出提示音。
下一个x
下一个单元格
末端接头
注:
1.A1列=文件标题
2.B1列=文件内容
3.直到包含文本的最后一行(即空行)
相反的顺序,如果你想这样做
1.A1列=文件标题
2.A2列=文件内容
3.在包含文本的最后一行(即空行)之前,只需将Print#1,cell.Offset(0,1).text更改为Print#1,cell.Offset(1,0).text
我的文件夹位置=C:\wamp\www\GeoPC\u NG\kogistate\igala\u land\
我的文件扩展名=.php,您可以根据自己的选择更改扩展名(.txt、.htm和.csv等) 我在每次保存结束时都加入了bip声音,以了解我的工作是否正在进行
尺寸x
对于x=1到3'循环3次。
“哔”的一声发出提示音。
您想用什么语言完成此任务?谢谢您的帮助。我可能做错了什么,但我得到了一个“下一个没有为”的错误。有什么想法吗?@nutsch我收到一个错误,上面写着“ActiveX组件无法创建对象”,我收到一个“400”错误。我确实有几个单元格在内容中是空白的。不确定这是否是原因。宏在a列中遇到空白单元格时停止(因为按照您的说明,文件名是空白的)。我从来没有遇到过400错误,我只是查了一下。有没有可能某些“空白”单元格实际上包含一串空格?还有,你用的是什么版本的Excel?奇怪,我在2010年测试过,没有问题。宏在出错之前是否写入任何文本文件?我编辑了以Do-Until开头的行,请使用新行尝试宏。我仍然收到相同的“400”错误。我确实看到它在一秒钟内为每个文本文件创建电子表格。“400”错误后打开的电子表格是第二行,其中包含A-G列中的文本。现在我认为问题的原因可能是通过第一列的内容命名它。如果按顺序编号命名文本文件如何?谢谢我做了一些轻微的编辑来创建新工作簿的特定引用,不确定它是否有用。你能把前几个单元格放在A列吗?它们可以作为有效的文件名吗?谢谢,这只做了一点小改动:打印#1,cell.Offset(0,1).Value2而不是打印#1,cell.Offset(0,1).Text。文本似乎只打印了前1025个字符,而不是整个字符text@Igalapedia但是如果您想在文本文件中包含列B>中的所有列作为内容转发,该怎么办?我将在哪里更改该变量?