返回列表 上一主題 發帖

[發問] 工作表複製跨另一檔案工作表

回復 9# n7822123
n7822123 阿龍老師 你好

經測試後.以可運用
發現1問題
當複至同一工作表清空"明細存檔"只留"A1"標題欄時
出現"[明細存檔!A1].End(4)(2).PasteSpecial"出現錯誤
同樣複製另檔案工作表出現"oWb.Sheets(oSNm).[A1].End(4)(2).PasteSpecial  '複製到另工作表(不同檔案)出現錯誤
需清空時留1筆資料才會複製貼上

"A1"為標題欄
也就是每月需存檔時.先把工作表中資料清空.不能全清空.需留"A1""A2"欄中資料.才能運用

  感謝  n7822123 阿龍老師  指導
敏而好學,不恥下問

TOP

回復 11# BV7BW

改一下,試看看~

Sub Test()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
[訂貨明細表!A1].CurrentRegion.Offset(1).Copy
Sheets("明細存檔").Cells(Rows.Count,1).End(3)(2).PasteSpecial
'===以下為複製到另一檔案工作表===
oPath$ = ThisWorkbook.Path   '自定輸出路徑
oFile$ = "訂貨明細存檔.xlsm"     '自定輸出檔名
oSNm$ = "訂貨明細表存檔"        '自定輸出表名
On Error Resume Next
Set oWb = Workbooks(oFile$)
If Err <> 0 Then Err.Clear: Set oWb = Workbooks.Open(oPath & "\" & oFile)
If Err <> 0 Then MsgBox "找不到輸出檔 '" & oPath & "\" & oFile & "',請確認!": GoTo Over
On Error GoTo 0
oWb.Sheets(oSNm).Cells(Rows.Count,1).End(3)(2).PasteSpecial  '複製到另工作表(不同檔案)
oWb.Close 1: Set oWb = Nothing
Over: Application.CutCopyMode = False
End Sub
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 12# n7822123

感謝  n7822123 阿龍老師  你好


測試後.以完全運用成功
  非常謝謝你
再次感謝你
敏而好學,不恥下問

TOP

回復 12# n7822123

n7822123 阿龍老師  你好

測試後.以完全運用
是否可追加清除
要複製工作表"明細存檔"前.先清除"A2"至"N65536"後再貼上資料
複製另一檔案"訂貨明細存檔"中工作表"訂貨明細表存檔"前.先清除"A2"至"N65536"後再貼上資料

謝謝
敏而好學,不恥下問

TOP

回復 12# n7822123
n7822123 阿龍老師 你好

經修改增列"明細存檔"清除後再行貼上資料部份已可運行 工作表存檔.zip (64.8 KB)

複製另一檔案"訂貨明細存檔"中工作表"訂貨明細表存檔"增列清除後再行貼上資料部份
卻不解從何處增列清除後再行貼上資料之程式 訂貨明細存檔.zip (32.14 KB)

也就是說:當需複製前先將"明細存檔"清除後才貼上資料
                :當需複製前先將"訂貨明細存檔"清除後才貼上資料

是否可請 n7822123 阿龍老師 賜教

         謝謝
敏而好學,不恥下問

TOP

本帖最後由 n7822123 於 2021-7-30 23:02 編輯

回復 15# BV7BW


也就是說:當需複製前先將"明細存檔"清除後才貼上資料
                :當需複製前先將"訂貨明細存檔"清除後才貼上資料

這樣感覺更簡單了呀......全部清除在全部複製貼上就好(含標題列)

如果不是工作表名、檔名不一樣,我都想要直接複製檔案了


Sub Test()
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Set 此表 = ActiveSheet
Sheets("明細存檔").Cells.Clear                            '含格式全部清除
此表.[A1].CurrentRegion.Copy [明細存檔!A1]   '複製貼上

'===以下為複製到另一檔案工作表===
oPath$ = ThisWorkbook.Path   '自定輸出路徑
oFile$ = "訂貨明細存檔.xlsm"     '自定輸出檔名
oSNm$ = "訂貨明細表存檔"        '自定輸出表名
On Error Resume Next
Set oWb = Workbooks(oFile$)
If Err <> 0 Then Err.Clear: Set oWb = Workbooks.Open(oPath & "\" & oFile)
If Err <> 0 Then MsgBox "找不到輸出檔 '" & oPath & "\" & oFile & "',請確認!": GoTo Over
On Error GoTo 0
oWb.Sheets(oSNm).Cells.Clear     '含格式全部清除
此表.[A1].CurrentRegion.Copy oWb.Sheets(oSNm).[A1]  '複製到另工作表(不同檔案)

oWb.Close 1: Set oWb = Nothing
Over: Application.CutCopyMode = False
End Sub
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

回復 16# n7822123
感謝 n7822123 阿龍老師 指導

理解後再回報

謝謝你
敏而好學,不恥下問

TOP

回復 16# n7822123
n7822123 阿龍老師 你好

經測試後完全合乎需求

我修改為2道按鈕工作

第一道為"明細存檔"以第1次程式前段為基點複製到"明細存檔"中

因"明細存檔"不須清除動作.需保留原始資料及修改後資料以便查證

第2道按鈕"訂貨明細存檔"以第2次程式後段為基點複製到"訂貨明細存檔"中.也是主要重點

因複製基本資料為連貫性資料

又因"訂貨明細存檔"需清除前資料後才貼上複製後資料.不至因前資料與至複製後資料重複

列)前資料:123.複製貼上後資料:123456

沒清除會出現123123456.等於123是重複資料.而需求是123456

現以修改完成運用

   非常感謝 n7822123 阿龍老師 指導
            謝謝
敏而好學,不恥下問

TOP

        靜思自在 : 人生最大的成就是從失敗中站起來。
返回列表 上一主題