返回列表 上一主題 發帖

[發問] 將資料自動複製到,目前點選的所在頁面並自動選擇最後一行空白處貼上

[發問] 將資料自動複製到,目前點選的所在頁面並自動選擇最後一行空白處貼上

想請問例如要將
1.              檔案1.xls內的第一個sheet內第二行的內容,使用巨集自動複製到另一個檔案2.xls內所在頁面的位置上需如何寫成巨集呢

Sub 自動複製客戶明細()
'
' 自動複製客戶明細 巨集
'
' 快速鍵: Ctrl+A
'
    Windows("紀錄表-基礎.xls").Activate
    Range("A2:M2").Select
    Selection.Copy
    Windows("客戶明細-業務專用.xlsm").Activate
    ActiveSheet.Paste link:=True
End Sub

TOP

回復 1# starry1314

因為檔案名稱以及分頁名稱都需要被指出
因此我假設檔案名稱A以及分頁名稱A1都是被拷貝的檔案

假設您的按鈕在檔案二的分頁上

可以直接使用

Sub test()
    Workbooks("A").Sheets("A1").Rows(2).Copy
    EndRow = ActiveSheet.UsedRange.Rows.Count + 1 '所有使用中的列數+1
    Rows(EndRow).PasteSpecial Paste:=xlPasteValues
End Sub
PKKO

TOP

印象中的寫法
Workbooks("1.xls").Sheets("A1").Rows(2).Copy  Workbooks("1.xls").Sheets("A1").cells(Workbooks("2.xls").Sheets("B1").UsedRange.Rows(1).Count + 1,1)

但此法會連同複製儲存格的格式,但上面大大的寫法則只會複製數值〈.PasteSpecial Paste:=xlPasteValues〉

TOP

回復 4# tyrone123456


    Workbooks("2.xls").Sheets("B1").UsedRange.Rows(1).Count + 1=>只會計算第一列使用的列數,因此永遠都是1+1=2
列數可能會有問題
PKKO

TOP

回復  starry1314

因為檔案名稱以及分頁名稱都需要被指出
因此我假設檔案名稱A以及分頁名稱A1都是被拷 ...
PKKO 發表於 2015-4-16 12:04


是說我原本的巨集指令完全替換成像你這樣的範例嗎??
Sub test()
    Workbooks("紀錄表-基礎.xls").Sheets("客戶明細").Rows(2).Copy
    EndRow = ActiveSheet.UsedRange.Rows.Count + 1 '所有使用中的列數+1
    Rows(EndRow).PasteSpecial Paste:=xlPasteValues
End Sub

像這樣嗎? 另ROW(2)的意思是第二個檔案? 另workbooks的意思是?

我原本的巨集指令是只能達成固定檔名的自動複製貼上,但檔名只要不一樣就失敗了~所以想寫成
A複製到E
B複製到E1
C複製到E2
巨集儲在E

不管被烤或拷貝後都可以不均檔名,

TOP

是有這個疑慮,但是理論上第一排應該都要有資料,例如ID編碼等唯一性的資料,而我不寫那種方式是曾經遇過非第一排位置的儲存格被"不小心"按到一空白資料,但是這在檢查過程是很難發現的異常,但卻造成資料到那一列就跳行,害我ㄧ直檢查程式是哪邊寫錯,最後當然才知道真正原因,而限制第一欄計算筆數,就可以立即看到問題

TOP

ROW(2)的意思:代表該Sheet的第2"行"
workbooks的意思是? 如果你的複製貼上作業是在同一excel檔案,就可以忽略,但若是不同excel檔案,就像你這個case是不同檔案之間的內容複製,就要加入,而且starry的寫法意思要把基礎2.xls的資料複製到"目前活化的檔案的目前使用Sheet內"

我習慣寫詳細些,這樣Debug會較清楚,但缺點是多號一些資源
    Workbooks("紀錄表-基礎.xls").Sheets("客戶明細").Rows(2).Copy
    Workbooks("2.xls").Sheets("123").EndRow =  Workbooks("2.xls").Sheets("123").UsedRange.Rows.Count + 1 '所有使用中的列數+1
    Workbooks("2.xls").Sheets("123").Rows(EndRow).PasteSpecial Paste:=xlPasteValues

TOP

回復 8# tyrone123456


        Sub test()
    Workbooks("紀錄表 ").Sheets("客戶明細").Rows(2).Copy
    EndRow = ActiveSheet.UsedRange.Rows.Count + 1 '所有使用中的列數+1
    Rows(EndRow).PasteSpecial Paste:=xlPasteValues
End Sub

可使用~但像   Workbooks("紀錄表 ").Sheets("客戶明細").Rows(2).Copy
變成只能使用固定檔名~可寫成將巨集存在哪個檔案裡就複製裡面sheets("客戶明細")的到目前所在的頁面嗎?
另如果要自動插入超連結要怎麼寫呢?GOOGLE找到的方法只變成自動貼上連結,無法讓他點選就跳選到當初複製過來的那個檔案裡面

TOP

目前寫法
Sub test()
    Workbooks("紀錄表 ").Sheets("客戶明細").Rows(2).Copy
    EndRow = ActiveSheet.UsedRange.Rows.Count + 1 '所有使用中的列數+1
    Rows(EndRow).PasteSpecial Paste:=xlPasteValues
    ActiveSheet.Paste Link:=True
End Sub

TOP

        靜思自在 : 有心就有福,有願就有力,自造福田,自得福緣。
返回列表 上一主題