- 帖子
- 438
- 主題
- 67
- 精華
- 0
- 積分
- 531
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office 2010
- 閱讀權限
- 50
- 性別
- 男
- 註冊時間
- 2012-10-30
- 最後登錄
- 2024-11-19
|
20#
發表於 2012-12-4 14:55
| 只看該作者
回復 17# GBKEE
01.Option Explicit
02.Sub EX()
03. Dim Rng(1 To 2) As Range
04. 'With Workbooks.Open("C:\USER\DESTOP\E.XLSX").Sheets("2012") '檔案未開啟時用此程式碼
05. With Workbooks("E.XLSX").Sheets("2012") '檔案已開啟時用此程式碼
06.
07. .Range("A1").CurrentRegion.Offset(1) = "" '清除舊資料
08.
09. 'A2:AM2 to A100:AM100 是Y:\2012\A.XLSX (2012) 的資料
10. Set Rng(1) = .[A2] '第一個Rng(1)
11. With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012") '檔案開啟
12. Set Rng(2) = .[A2:AM2]
13. Set Rng(2) = .Range(Rng(2), .[A2].End(xlDown)) '資料不停增加: 到最後的資料
14. Rng(2).Copy Rng(1)
15. .Parent.Close False '檔案關閉
16. End With
17. 'A101:AM101 to A150:AM150是C:\2012\B.XLSX (Nov)的資料
18. Set Rng(1) = Rng(1).End(xlDown).Offset(1) '第二個Rng(1)
19. With Workbooks.Open("Y:\2012\B.XLSX").Sheets("Nov") '檔案開啟
20. Set Rng(2) = .[A101:AM101]
21. Set Rng(2) = .Range(Rng(2), .[AM101].End(xlDown)) '資料不停增加: 到最後的資料
22. Rng(2).Copy Rng(1)
23. .Parent.Close False '檔案關閉
24. End With
25. 'A151:AM151 to A270:AM270是Z:\2012\C.XLSX (2012) 的資料
26. Set Rng(1) = Rng(1).End(xlDown).Offset(1) '第三個Rng(1)
27. With Workbooks.Open("Z:\2012\C.XLSX").Sheets("2012") '檔案未開啟
28. Set Rng(2) = .[A151:AM151] '第二列 開始
29. Set Rng(2) = .Range(Rng(2), .[AM151].End(xlDown)) '資料不停增加: 到最後的資料
30. .Parent.Close False '檔案關閉
31. End With
32. End With
33.End Sub
這裡有個誤會,我的意思是說copy的資料不知道是多少,之前提出的100,50 ,120是舉例。
With Workbooks.Open("Y:\2012\A.XLSX").Sheets("2012") 自動從第二列開始copy過去,copy 的位置從第二列開始順序往下copy ,直到 A.XLSX最後一列的資料,
With Workbooks.Open("Y:\2012\B.XLSX").Sheets("Nov") 自動從第二列開始copy過去,copy 的位置承接上一個FILE A.XLSX的最後一列之後,直到 B.XLSX最後一列的資料,
With Workbooks.Open("Z:\2012\C.XLSX").Sheets("2012") 自動從第二列開始copy過去,copy 的位置承接上一個FILE B.XLSX的最後一列之後,直到 C.XLSX最後一列的資料, |
|