- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
6#
發表於 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
複製代碼 |
|