我需要幫助從名爲「工作表」的Excel電子表格中的每行創建單獨的文本文件。我希望文本文件以列A的內容命名,列B-G是內容,最好是在文本文件中的每列之間使用雙重硬返回,因此每列之間將有一個空行。從Excel電子表格中的每一行創建文本文件
這可能嗎?我將如何去做。謝謝!
我需要幫助從名爲「工作表」的Excel電子表格中的每行創建單獨的文本文件。我希望文本文件以列A的內容命名,列B-G是內容,最好是在文本文件中的每列之間使用雙重硬返回,因此每列之間將有一個空行。從Excel電子表格中的每一行創建文本文件
這可能嗎?我將如何去做。謝謝!
@ 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
我收到一個「400」錯誤的錯誤。 。 。我確實有一些內容中空白的單元格。 。 。不知道這是否是原因。當它遇到A列中空白單元(因爲這樣的文件名是空白的,按照您的指示) – user1775582
宏停止。我從來沒有遇到400錯誤,我只是查了一下。這些「空白」單元中是否有可能實際上包含一串空格?另外,您使用的是什麼版本的Excel? – ExactaBox
我運行Excel 2010中 – user1775582
所附的VBA宏將做到這一點,節省在C txt文件:\ 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
感謝您的幫助。我可能做錯了什麼,但我得到了「下一個沒有」的錯誤。有任何想法嗎? – user1775582
@nutsch我收到寫着「ActiveX組件不能創建對象」 – danfo
爲了別人的利益,我將問題排序了出來。我用「Chr(13)& Chr(10)」代替了「Chr(10)& Chr(10)」,它的工作完美。
我用了下面的簡單代碼將我的excel行作爲文本文件或許多其他格式保存很長一段時間,它一直爲我工作。
子savemyrowsastext()
昏暗X
爲每個小區在Sheet1.Range( 「A1:A」 & Sheet1.UsedRange.Rows.Count)
'可以工作表Sheet1更改爲自己選擇
SAVETEXT = cell.Text
打開 「C:\瓦帕\ WWW \ GeoPC_NG \ sogistate \ igala_land \」 & SAVETEXT & 「.PHP」 以便輸出爲#1
印刷#1,cell.Offset(0, 1).Text
關閉#1
對於x = 1至3'循環3次。
嘟嘟'聽起來很有聲調。
下一個x
接着細胞
結束子
注:
1.柱A1 =文件標題
2.柱B1 =文件內容
3.直到包含文本的最後一行(即空行)
以相反的順序,如果你想使它像這樣;
1.柱A1 =文件標題
2.柱A2 =文件內容
3.直到包含文本的最後一行(即空行),只是改變印刷#1,cell.Offset(0, 1)。文本到印刷#1,cell.Offset(1,0)。文本
我的文件夾位置= C:\瓦帕\ WWW \ GeoPC_NG \ kogistate \ igala_land \
我的文件extension = .php,你可以改變擴展名到你自己的選擇(.txt,.htm &。CSV等) 我包括在每個儲蓄結束BIP聲音知道如果我的工作是在
點心去X
當x = 1〜3'循環3次。
嘟嘟'聽起來很有聲調。
謝謝,這個工作做了一些小的改動:打印#1,cell.Offset(0,1).Value2而不是Print#1,cell.Offset(0,1).Text。看起來.Text只打印了第一個1025字符,而不是整個文本 – Nickey
@Ialadala項目但是如果你想包含列B>所有列作爲文本文件中的內容?我會在哪裏更改該變量? –
在什麼語言你想做到這一點? –