Board logo

標題: 將不同檔案內資料貼在同一檔案 [打印本頁]

作者: enoch    時間: 2012-2-23 12:11     標題: 將不同檔案內資料貼在同一檔案

請問如何將指定資料夾C:\temp\內所有CSV 的檔案續個開啟,
然後將資料貼在同一個新的工作表內, 但每個CSV的檔案行數不固定

例如A.CSV 共有3行, 會貼在新工作表1-3行
跟住開B.CSV 共有10行, 會貼在第4-13行
請指教
作者: GBKEE    時間: 2012-2-23 14:23

回復 1# enoch
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim xlPath As String, Rng As Range, xF As String, Sh As Worksheet
  4.     xlPath = "C:\temp\"                                 '指定資料夾
  5.     xF = Dir(xlPath & "*.CSV")
  6.     'Dir 函數 傳回一個 String ,用以表示合乎條件、檔案屬性、磁碟標記的一個檔案名稱、或目錄、檔案夾名稱。
  7.     If xF = "" Then MsgBox xlPath & " 沒有CSV 檔案": Exit Sub
  8.     Application.ScreenUpdating = False
  9.     Set Rng = Workbooks.Add(1).Sheets(1).[a1]           '新開檔案第1個工作表的[A1]的儲存格
  10.     Do
  11.         With Workbooks.Open(xlPath & xF)                '開啟 Dir 傳回的 String(在此為檔案名稱)
  12.             If Rng.Row > 1 Then Set Rng = Rng.Offset(1) '儲存格不是[A1]下移一列
  13.             .Sheets(1).UsedRange.Copy Rng               'CSV檔的內容 複製到 Rng
  14.             Set Rng = Rng.End(xlDown)                    '複製後 Rng往下移到資料底端
  15.             .Close SaveChanges:=False                    '關閉CSV檔  不存檔
  16.         End With
  17.         xF = Dir                                        '繼續尋找 CSV檔
  18.     Loop Until xF = ""                                  '離開Do 迴圈的條件是  繼續尋找不到 CSV檔
  19.     Application.ScreenUpdating = True
  20.     MsgBox xlPath & "  CSV 檔案 複製 完成"
  21.     Set Sh = Rng.Parent
  22.     Sh.Parent.SaveAs  xlPath & "TEST.XLS"   '''''存檔
  23. End Sub
複製代碼

作者: enoch    時間: 2012-2-25 11:59

本帖最後由 enoch 於 2012-2-25 12:03 編輯

謝謝GBKEE
但有部份程式唔明白, 想請問:
Sheets(1).[a1]  與 Sheets(1).range("a1") 相同嗎

Set Sh = Rng.Parent  點用呢?

同埋想最後顯示總共複製了多少行資料

及在此程式以外, 如何檢查工作表內總共用了多少行

煩請再指教
作者: GBKEE    時間: 2012-2-25 15:13

回復 3# enoch
[  ]..看這裡

Rng.Parent  點用呢?
程式 已 DIM  Rng As Range  .Parent ->   Range的父層(上一層物件: 所在的工作表 )  

MsgBox .Sheets(1).UsedRange.Rows.Count  ' CSV檔的內容的 行數

所有 CSV檔的內容複製完畢後
MsgBox  Rng.Row   可顯示    複製所有 CSV檔的內容的 行數




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