標題:
多個文字檔,匯入同一EXCEL SHEET內
[打印本頁]
作者:
txiec
時間:
2010-8-5 01:09
標題:
多個文字檔,匯入同一EXCEL SHEET內
多個文字檔,匯入同一EXCEL SHEET內
有多個文字檔 ,希望將固定第5欄,匯入EXCEL SHEET 1
第9欄之後有資料的,匯入EXCEL SHEET 2 .
連續匯入
請高手協助,給個巨集, 感謝.
作者:
GBKEE
時間:
2010-8-5 08:08
回復
1#
txiec
請 附上實際檔案 來試試看
作者:
txiec
時間:
2010-8-5 08:42
要載入合併之資料如附件.
作者:
GBKEE
時間:
2010-8-5 15:15
回復
3#
txiec
試試看
Sub Ex()
Dim ThisBook As Workbook, ThisPath$, dirFiIe$, Sh As Worksheet, R1%, R2%
'Set ThisBook = Workbooks(1) '指定合併活頁簿為第一個活頁簿
'Set ThisBook = Workbooks("test.xls") '指定合併活頁簿
'Set ThisBook = ThisWorkbook '指定合併活頁簿是程式所在的活頁簿
Set ThisBook = ActiveWorkbook '指定合併活頁簿是作用中的活頁簿
ThisPath = "d:\TEST\test\" '文字檔的目錄位置
dirFiIe = Dir(ThisPath & "*.csv")
With Workbooks.Open(ThisPath & dirFiIe)
If Application.Count(ThisBook.Sheets(1).Range("a:a")) = 0 Then
.Sheets(1).Rows(14).Copy ThisBook.Sheets(1).[a1]
.Sheets(1).Rows(14).Copy ThisBook.Sheets(2).[a1]
End If
.Close
End With
Do While dirFiIe <> ""
With Workbooks.Open(ThisPath & dirFiIe) '開啟文字檔
Set Sh = .Sheets(1) '設定為文字檔的工作表
'複製1-5列的資料 到合併工作表1 A欄的最後一筆資料之後
R1 = ThisBook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row '取得合併工作表1 A欄的最後一筆資料
Sh.[a15].Resize(5, 3).Copy ThisBook.Sheets(1).Range("a" & R1 + 1)
'''''''''''''''''''''''''''''''
'複製1-5列的資料 到合併工作表1 A欄的最後一筆資料之後
R2 = Sh.Range("A" & Rows.Count).End(xlUp).Row '取得文字檔的工作表的最後一筆資料
If R2 >= 20 Then '第9列之後有資料時 複製到合併工作表2 A欄的最後一筆資料之後
R1 = ThisBook.Sheets(2).Range("A" & Rows.Count).End(xlUp).Row '取得合併工作表2 A欄的最後一筆資料
Sh.Range("A20:A" & R2).Resize(5, 3).Copy ThisBook.Sheets(2).Range("a" & R1 + 1)
End If
.Close '關閉文字檔
End With
dirFiIe = Dir
Loop
ThisBook.Save
End Sub
複製代碼
作者:
hsiaohsien
時間:
2011-8-31 21:17
幫忙改良此檔案~~合併csv檔,文字檔的rows累計超過A65536時可以換至C1合併,C欄累計將超過65536再換至E1,因csv檔案數很多,另外能否將csv檔名日期加入儲存格中,加以區隔每個csv檔的開頭與結束。
作者:
GBKEE
時間:
2011-9-1 08:29
回復
5#
hsiaohsien
試試看
Option Explicit
Sub Ex()
Dim ThisPath$, dirFiIe$, RR As Double, TheDate As Date
Dim Rng As Range, ShRng As Range
ThisPath = ThisWorkbook.Path & "\"
dirFiIe = Dir(ThisPath & "*.csv")
Set Rng = ThisWorkbook.Sheets(1).[B1]
Rng.CurrentRegion = ""
Do While dirFiIe <> ""
With Workbooks.Open(ThisPath & dirFiIe)
Set ShRng = .Sheets(1).[a1].CurrentRegion
RR = Rows.Count - Rng.Row + 1
TheDate = DateSerial(Mid(dirFiIe, 1, 3) + 1911, Mid(dirFiIe, 4, 2), Mid(dirFiIe, 6, 2))
If ShRng.Rows.Count <= RR Then
Rng.Resize(ShRng.Rows.Count, 2) = ShRng.Value
Rng.Offset(, -1).Resize(ShRng.Rows.Count) = TheDate
Else
With ShRng
Rng.Resize(RR, 2) = .Range(.Cells(1, 1), .Cells(RR, 2)).Value
Rng.Offset(, -1).Resize(RR) = TheDate
Set Rng = ThisWorkbook.Sheets(1).Cells(1, Rng.Column + 3)
Rng.Resize(.Rows.Count - RR + 1, 2) = .Range(.Cells(.Rows.Count - RR + 1, 1), .Cells(.Rows.Count, 2)).Value
Rng.Offset(, -1).Resize(.Rows.Count - RR + 1) = TheDate
End With
End If
.Close
If Rng.Row = Rows.Count Then
Set Rng = ThisWorkbook.Sheets(1).Cells(1, Rng.Column + 3)
Else
Set Rng = Rng.End(xlDown).Offset(1)
End If
End With
dirFiIe = Dir
Loop
ThisWorkbook.Save
Set Rng = Nothing
Set ShRng = Nothing
End Sub
複製代碼
作者:
hsiaohsien
時間:
2011-9-1 10:56
謝謝GBKEE版大
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)