Board logo

標題: [發問] 請教EXCEL內容資料匯出成TXT檔的設定 [打印本頁]

作者: ianlcc    時間: 2014-2-17 23:09     標題: 請教EXCEL內容資料匯出成TXT檔的設定

請教一下
因為有工作需求,需要將EXCEL表中的資料彙整並匯成TXT檔
共有幾萬筆…所以在這向各位請教,請見諒。
如果想要將EXCEL表格中的資料,匯出成TXT檔
一、工作表1
A1欄位:AAAAA
B1∼B20:數字B1∼B20(假設到第20列)
C1∼C20:數字C1∼C20(假設到第20列)
D1∼D20:數字D1∼D20(假設到第20列)

→匯出TXT檔變成:_AAAAA B1 C1D1 B2 C2 D2 B3 C3 D3 B4 C4 D4……
備註:
⑴自動判斷如果B、C、D欄填入的數字只有第10列的話,_AAAAA 後面就只會填到第10列的數字
⑵A1欄位就看輸入什麼英文字,在TXT就顯示_英文字
⑶每個英文字及數字間以「空格」

二、工作表2
A1欄位:AAA(英文字)
B1欄位:BBB(英文字)
C1欄位:CCC(英文字)
D1∼D20:數字(假設到第20列)
→匯出TXT檔變成:
①_AAA (BBB_D1 BBB_D2 BBB_D3 BBB_D4…) CCC
②如果D欄位只有D1有數字的話(D2∼D20空白的話),就變成_AAA BBB_D1 CCC
③自動判斷如果D欄填入的數字只有第10列的話,只會加到BBB_ 後面就只會填到第10列的數字。
④A1、B1、C1欄位就看輸入什麼英文字,在TXT就顯示_英文字
⑤每個英文字及數字間以「空格」

不好意思,可以指導一下嗎?謝謝各位前輩指教∼
作者: GBKEE    時間: 2014-2-18 16:48

回復 1# ianlcc
看的眼花,請上傳Excel檔,Txt檔,
作者: ianlcc    時間: 2014-2-18 18:58

回復  ianlcc
看的眼花,請上傳Excel檔,Txt檔,
GBKEE 發表於 2014-2-18 16:48


[attach]17519[/attach]
我已經將範例附上檔案
共有四個檔案
一個EXCEL對應三個TXT檔
請參考!謝謝∼
作者: GBKEE    時間: 2014-2-19 08:08

回復 3# ianlcc
   
二、工作表2
A1欄位:AAA(英文字)
B1欄位:BBB(英文字)
C1欄位:CCC(英文字)            '附檔是數字
D1∼D20:數字(假設到第20列)        '附檔是英文字
→匯出TXT檔變成:
①_AAA (BBB_D1 BBB_D2 BBB_D3 BBB_D4…) CCC
②如果D欄位只有D1有數字的話(D2∼D20空白的話),就變成_AAA BBB_D1 CCC  '附檔是C1
③自動判斷如果D欄填入的數字只有第10列的話,只會加到BBB_ 後面就只會填到第10列的數字。
  1. Option Explicit
  2. Sub Ex_txt(Sh As String, A As String) '輸出文字檔
  3. Dim fs As Object
  4. Set fs = CreateObject("Scripting.FileSystemObject")
  5. Set fs = fs.CreateTextFile("d:\" & Sh & ".txt", True)
  6. fs.WriteLine (A)
  7. fs.Close
  8. End Sub
  9. Sub Ex_工作表1()
  10. Dim C As Range, A As String
  11. With Sheets("工作表1")
  12. A = "_" & .Range("a1")
  13. For Each C In .UsedRange.Columns("B:D").Rows
  14. A = A & " " & Join(Application.Transpose(Application.Transpose(C.Value)), " ")
  15. Next
  16. Ex_txt .Name, A
  17. End With
  18. End Sub
  19. Sub Ex_工作表2()
  20. Dim C As Range, A As String, Ar
  21. With Sheets("工作表3")
  22. For Each C In .UsedRange.Columns(3).Cells 'C1欄位:CCC(英文字)'附檔是數字
  23. A = A & .Range("B1") & "_" & C & " "
  24. Next
  25. If .UsedRange.Columns(3).Cells.Count > 1 Then
  26. A = "_" & .Range("a1") & " (" & Mid(A, 1, Len(A) - 1) & ") " & .Range("D1")
  27. Else 'D欄位只有D1有數字的話(D2∼D20空白的話),就變成_AAA BBB_D1 CCC '附檔是C1
  28. A = "_" & .Range("a1") & " " & A & .Range("D1")
  29. End If
  30. Ex_txt .Name, A
  31. End With
  32. End Sub
複製代碼

作者: ianlcc    時間: 2014-2-19 11:45

感恩您的協助及幫忙
我剛剛測試了一下,發現有一個問題
我要RUN工作表2的時候,存檔是存「工作表3」的名稱,而且結果也是工作表3的內容
工作表2的資料無法生成TXT檔!

回復  ianlcc
GBKEE 發表於 2014-2-19 08:08

作者: ianlcc    時間: 2014-2-19 11:47

您好
我剛剛修正了一下
把With Sheets("工作表3")改成With Sheets("工作表2")
就正常了
非常的感謝您的幫忙,我再RUN RUN∼
不然的話,我光是1萬多筆資料,我會瘋掉!!

感恩您的協助及幫忙
我剛剛測試了一下,發現有一個問題
我要RUN工作表2的時候,存檔是存「工作表3」的名稱 ...
ianlcc 發表於 2014-2-19 11:45





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)