Board logo

標題: 不同檔案間的複製 [打印本頁]

作者: color790    時間: 2010-9-28 14:54     標題: 不同檔案間的複製

請問.....該怎麼從檔案1複製某些固定的儲存格至檔案2某些固定的儲存格??
例如: 在檔案1複製A3 A4 A5 A6 A7 A9 到檔案2的 B3 B4 B5 B10 B11 B12  (以上是隨便打的,沒有一定)
作者: GBKEE    時間: 2010-9-28 19:35

回復 1# color790
你要複製儲存格的欄列 與 目的儲存格的欄列 都不是一連續範圍
所以將複製儲存格的值,儲存於字典物件.於目的儲存格一一給予
  1. Sub Ex()
  2. Dim D As Object, i As Integer, E As Range
  3. Set D = CreateObject("Scripting.Dictionary")
  4. i = 1
  5. For Each E In Workbooks("book1").Sheets("SHEET1").Range("A3:A7,A9")
  6. D(i) = E.Value
  7. i = i + 1
  8. Next
  9. i = 1
  10. For Each E In Workbooks("book2").Sheets("SHEET1").Range("B3:B5,B10:B12")
  11. E = D(i)
  12. i = i + 1
  13. Next
  14. End Sub
複製代碼

作者: color790    時間: 2010-9-28 23:18

本帖最後由 color790 於 2010-9-28 23:24 編輯

謝謝GBKEE版主的解答,但這樣需要每次都keyin workbook name (因為每次檔案1&檔案2的檔名都不相同)
有沒有辦法在檔案1以 with activesheet 複製儲存格的值,儲存於字典物件後, 之後再至檔案2 以with activesheet 貼上 也就是分兩個vba程式,或是有更好的方法,感恩 .
作者: oobird    時間: 2010-9-29 00:00

Sub yy()
With ActiveSheet
ary = Array(.[a3], .[a4], .[a5], .[a6], .[a7], .[a9])
End With
Workbooks(2).Activate
With ActiveSheet
ary2 = Array(.[b3], .[b4], .[b5], .[b10], .[b11], .[b12])
For i = 0 To 5
ary2(i).Value = ary(i)
Next
End With
End Sub
作者: color790    時間: 2010-9-29 00:31

本帖最後由 color790 於 2010-9-29 00:56 編輯

回復 4# oobird

謝謝OOBIRD版主的回答
  1.請問...是不是要複製的檔案第一個開,要貼上的檔案第二個開
  2.為什麼要for i ...
  3.為什麼要0 to 5

另外問個小問題- 以前用office2003不會有這個問題,現在用2007版,就是要編輯個人工作活頁薄的巨集時,都會出現 " 無法在隱藏活頁薄編輯巨集 .... " 非得要打開PERSONAL.XLSB 才能編輯,而且PERSONAL關掉後巨集就不能使用,這個有解嗎? 2010版的也會這樣嗎?
作者: oobird    時間: 2010-9-29 08:24

1.是的,在檔名不一定的情形下,以這樣方式才能決定誰是Workbooks(1),誰是Workbooks(2).
2.建立迴圈。
3.迴圈的次數(以你要複製的儲存格數字決定,陣列中內定值是從0開始。
2007,2010我都沒用過,無法理解或回覆這樣的問題。
作者: color790    時間: 2010-9-29 08:37

太感謝兩位版主的幫忙~^^
作者: ag324    時間: 2011-11-2 10:38

剛好需要用到 受益良多 感謝
作者: riceeric    時間: 2012-9-11 14:30

謝謝分享∼
另外想請教的是,我也是遇到每天要將某個檔的欄位插入另一個檔的某幾欄
檔名也是會照日期做更改
問題一:插入的動作是要改成?
問題二:在第一個檔案執行巨集時,是否可以跳出個表單讓User點選目前開啟的Excel的哪個來插入?




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