返回列表 上一主題 發帖

多個文字檔,匯入同一EXCEL SHEET內

多個文字檔,匯入同一EXCEL SHEET內

多個文字檔,匯入同一EXCEL SHEET內

有多個文字檔 ,希望將固定第5欄,匯入EXCEL SHEET 1
                                 第9欄之後有資料的,匯入EXCEL SHEET 2 .

連續匯入  



請高手協助,給個巨集,     感謝.

回復 1# txiec  請 附上實際檔案  來試試看

TOP

要載入合併之資料如附件.

BinCount.rar (2.48 KB)

TOP

回復 3# txiec
試試看
  1. Sub Ex()
  2.     Dim ThisBook As Workbook, ThisPath$, dirFiIe$, Sh As Worksheet, R1%, R2%
  3.     'Set ThisBook = Workbooks(1)           '指定合併活頁簿為第一個活頁簿
  4.     'Set ThisBook = Workbooks("test.xls")  '指定合併活頁簿
  5.     'Set ThisBook = ThisWorkbook           '指定合併活頁簿是程式所在的活頁簿
  6.     Set ThisBook = ActiveWorkbook          '指定合併活頁簿是作用中的活頁簿
  7.     ThisPath = "d:\TEST\test\"   '文字檔的目錄位置
  8.     dirFiIe = Dir(ThisPath & "*.csv")
  9.     With Workbooks.Open(ThisPath & dirFiIe)
  10.         If Application.Count(ThisBook.Sheets(1).Range("a:a")) = 0 Then
  11.             .Sheets(1).Rows(14).Copy ThisBook.Sheets(1).[a1]
  12.             .Sheets(1).Rows(14).Copy ThisBook.Sheets(2).[a1]
  13.         End If
  14.         .Close
  15.     End With
  16.     Do While dirFiIe <> ""
  17.         With Workbooks.Open(ThisPath & dirFiIe) '開啟文字檔
  18.             Set Sh = .Sheets(1)                 '設定為文字檔的工作表
  19.             '複製1-5列的資料  到合併工作表1 A欄的最後一筆資料之後
  20.             R1 = ThisBook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row '取得合併工作表1 A欄的最後一筆資料
  21.             Sh.[a15].Resize(5, 3).Copy ThisBook.Sheets(1).Range("a" & R1 + 1)
  22.             '''''''''''''''''''''''''''''''
  23.             '複製1-5列的資料  到合併工作表1 A欄的最後一筆資料之後
  24.             R2 = Sh.Range("A" & Rows.Count).End(xlUp).Row '取得文字檔的工作表的最後一筆資料
  25.             If R2 >= 20 Then     '第9列之後有資料時 複製到合併工作表2 A欄的最後一筆資料之後
  26.                 R1 = ThisBook.Sheets(2).Range("A" & Rows.Count).End(xlUp).Row '取得合併工作表2 A欄的最後一筆資料
  27.                 Sh.Range("A20:A" & R2).Resize(5, 3).Copy ThisBook.Sheets(2).Range("a" & R1 + 1)
  28.             End If
  29.             .Close   '關閉文字檔
  30.         End With
  31.         dirFiIe = Dir
  32.     Loop
  33.     ThisBook.Save
  34. End Sub
複製代碼

TOP

幫忙改良此檔案~~合併csv檔,文字檔的rows累計超過A65536時可以換至C1合併,C欄累計將超過65536再換至E1,因csv檔案數很多,另外能否將csv檔名日期加入儲存格中,加以區隔每個csv檔的開頭與結束。

test.rar (390.6 KB)

TOP

回復 5# hsiaohsien
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim ThisPath$, dirFiIe$, RR As Double, TheDate As Date
  4.     Dim Rng As Range, ShRng As Range
  5.     ThisPath = ThisWorkbook.Path & "\"
  6.     dirFiIe = Dir(ThisPath & "*.csv")
  7.     Set Rng = ThisWorkbook.Sheets(1).[B1]
  8.     Rng.CurrentRegion = ""
  9.     Do While dirFiIe <> ""
  10.         With Workbooks.Open(ThisPath & dirFiIe)
  11.             Set ShRng = .Sheets(1).[a1].CurrentRegion
  12.             RR = Rows.Count - Rng.Row + 1
  13.             TheDate = DateSerial(Mid(dirFiIe, 1, 3) + 1911, Mid(dirFiIe, 4, 2), Mid(dirFiIe, 6, 2))
  14.             If ShRng.Rows.Count <= RR Then
  15.                 Rng.Resize(ShRng.Rows.Count, 2) = ShRng.Value
  16.                 Rng.Offset(, -1).Resize(ShRng.Rows.Count) = TheDate
  17.             Else
  18.                 With ShRng
  19.                     Rng.Resize(RR, 2) = .Range(.Cells(1, 1), .Cells(RR, 2)).Value
  20.                     Rng.Offset(, -1).Resize(RR) = TheDate
  21.                     Set Rng = ThisWorkbook.Sheets(1).Cells(1, Rng.Column + 3)
  22.                     Rng.Resize(.Rows.Count - RR + 1, 2) = .Range(.Cells(.Rows.Count - RR + 1, 1), .Cells(.Rows.Count, 2)).Value
  23.                     Rng.Offset(, -1).Resize(.Rows.Count - RR + 1) = TheDate
  24.                 End With
  25.             End If
  26.             .Close
  27.             If Rng.Row = Rows.Count Then
  28.                 Set Rng = ThisWorkbook.Sheets(1).Cells(1, Rng.Column + 3)
  29.             Else
  30.                 Set Rng = Rng.End(xlDown).Offset(1)
  31.             End If
  32.         End With
  33.         dirFiIe = Dir
  34.     Loop
  35.     ThisWorkbook.Save
  36.     Set Rng = Nothing
  37.     Set ShRng = Nothing
  38. End Sub
複製代碼

TOP

謝謝GBKEE版大

TOP

        靜思自在 : 君子為目標,小人為目的。
返回列表 上一主題