这是否可行?我该如何操作呢?谢谢!
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(13) & Chr(10)"替换了"Chr(10) & Chr(10)",结果完美解决。
我已经使用以下简单的代码将我的Excel行保存为文本文件或其他格式相当长的时间了,它一直为我工作。
子句savemyrowsastext()
Dim 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).Text
关闭 #1
对于x = 1到3 '循环3次。
Beep '发出声音。
下一个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_NG\kogistate\igala_land\
我的文件扩展名= .php,您可以将扩展名更改为自己的选择(.txt、.htm 和 .csv 等)。
我在每次保存结束时都包含了bip声音以知道我的工作正在进行中
Dim x
对于x = 1到3 '循环3次。
Beep '发出声音。