返回列表 上一主題 發帖

[發問] 如何拆檔和結合新插入的指定文字檔

[發問] 如何拆檔和結合新插入的指定文字檔

各位大大

我有1個文字檔由300個檔案左右組合而成,並由括弧區隔如下說明
1.開啟TEST.21csv文字檔,該檔由多個csv文字檔組成,見括弧內[*檔名*],
如A01.csv,CC0001.csv和E00001.csv,檔名下方為檔案內容,
包含不同數量組合的行列數(檔案大小不相等),
直至空白列後會出現[*div*]為該檔結尾
,然後是接續下一個檔名.

問題1:如何將TEST.21csv文字檔內的全部檔案,
            依照檔案名字拆出來,
            依序拆成A01.csv,CC0001.csv和E00001.csv.

問題2:如何把新增的文字檔如BB01.csv和DD1.csv,
             依照英文檔名文字排列順序,
            按先後順序填入檔名和檔尾詞,
            放入至TEST21.csv文字檔
            並轉存成至TEST21OK.csv.
(結果如附件)

煩請先進 大大指導

TEST21.rar (23.48 KB)

本帖最後由 luke 於 2012-6-9 23:21 編輯

回復 23# GBKEE

測試sub 組檔()

謝謝版大

TOP

回復 22# luke
  1. Option Explicit
  2. Sub 拆檔()
  3.     Dim Ar(), MyPath As String, E As Range, Rng As Range, xlFileName As String
  4.     Dim ArFile(), Msg As String
  5.      'CurDir  傳回一個 Variant (String),用來代表目前的路徑。
  6.     MyPath = CurDir & "\"  '自行修改正確路徑。
  7.     If Dir(MyPath & "*.csv") <> "" Then Kill MyPath & "*.csv"   '刪除目前的路徑下的.cgs 檔案
  8.     With Workbooks("TEST21.csv").Sheets(1)
  9.         Ar = .Range("a:a").Value
  10.         .Range("a:a").Replace "[*.*]", "=1/0"                                       '[*.*] 替代為錯誤值
  11.         .Range("a:a").SpecialCells(xlCellTypeFormulas, xlErrors).Name = "xx"        '定義名稱: 錯誤值的儲存格
  12.         .Range("a:a").Value = Ar
  13.         For Each E In .[XX]
  14.             Set Rng = E.CurrentRegion
  15.             Set Rng = .Range(E.Cells(2, 1), Rng.Cells(Rng.Rows.Count, Rng.Columns.Count))
  16.             xlFileName = Replace(Replace(E, "[*", ""), "*]", "")
  17.             With Workbooks.Add(1)
  18.                 Rng.Copy .Sheets(1).[a1]
  19.                 .SaveAs MyPath & xlFileName, xlUnicodeText
  20.                 .Close 0
  21.             End With
  22.          Next
  23.          .Parent.Close 0
  24.     End With
  25. End Sub
複製代碼

TOP

回復 21# GBKEE

版大好

我想將檔案做拆檔即開啟TEST21.csv文字檔,
找到[*檔名.csv*]和結尾詞[*div*],
將兩者之間的檔案內容取出後,
按順序存成Unicode文字檔格式.

例如: 此檔TEST21.csvㄝ數量有5個檔案,
依據每個檔案對應內容轉存成5個新檔.
A01.csv
BB-1.csv
CC0001.csv
DD1.csv
E00001.csv
(PS: [*檔名.csv*]和結尾詞[*div*]不要存入新檔)

TEST21D.rar (98.88 KB)

TOP

回復 20# luke
  1. Option Explicit
  2. Sub 刪檔名()
  3.     Dim xi As Integer
  4.     With Workbooks("TEST21OK.CSV").Sheets(1)
  5.         .[A:A].Replace "[*]", "=1/0"
  6.         .Range("A:A").SpecialCells(xlCellTypeFormulas, xlErrors).Name = "xx"
  7.         .Range("xx").EntireRow.Delete
  8.         .Range("a:a").SpecialCells(xlCellTypeBlanks).Name = "xx"
  9.         For xi = 1 To .Range("xx").Areas.Count - 1
  10.             .Range("xx").Areas(xi).Cells(1).EntireRow.Delete
  11.          Next
  12.     End With
  13. End Sub
複製代碼

TOP

回復 18# GBKEE


    文件已上傳

     煩請指導 謝謝

TOP

本帖最後由 luke 於 2012-6-7 21:20 編輯

回復 18# GBKEE

    謝謝版大

   文字檔存檔格式已解決.

   TEST21OK.csv檔案可否按照順序除去檔案首列名字[*檔名.csv*]和檔案結尾[*div*]和前一個空白列,
   僅留中間內容如附件所示的檔案,
    (或使用#9程式於拆檔轉存Unicode文字檔格式時, 不要帶入上述檔名和結尾)
      
    煩請指導 謝謝!
    TEST21C.rar (12.56 KB)

TOP

回復 17# luke
Sh(1).Parent.Close True
Sh(1).Parent.SaveAs Filename:="D:\TEST21OK.txt", FileFormat:=xlUnicodeText, CreateBackup:=False

ActiveWorkbook.SaveAs fd & "結果\" & "TEST21OK.csv", 6
ActiveWorkbook.SaveAs  "D:\TEST21OK.txt", FileFormat:=xlUnicodeText, CreateBackup:=False

TOP

回復 16# GBKEE


    謝謝版大

    存檔時如何把ANSI文字檔格式改成Unicode文字檔格式

    以下是用巨集錄製語法
    ActiveWorkbook.SaveAs Filename:="D:\TEST21OK.txt", _
    FileFormat:=xlUnicodeText, CreateBackup:=False

    應如何套到#9和#11程式?
   
    煩請指導 謝謝

TOP

回復 14# luke
排序情形變得很錯亂
可以看看嗎?

TOP

        靜思自在 : 不要小看自己,因為人有無限的可能。
返回列表 上一主題