2016-10-24 5 views
0

宛先ブックに貼り付けるときに、ソース書式を保持する方法を教えてください。下記のコードは、基本的にはあるスプレッドシートから別のスプレッドシートにデータを転送して、宛先スプレッドシートに重複行がある場合は削除します。ありがとう!ソース書式を保存する

Sub TransferMar() 
' 
' Transfer Mar Macro 
' 

' 
    Dim lastRow As Long 

    ActiveSheet.Unprotect Password:="xxxxxx" 

    Columns.EntireColumn.Hidden = False 
    Rows.EntireRow.Hidden = False 
    Cells.AutoFilter 

    lastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 


    Range(Cells(4, 1), Cells(lastRow, 15)).Copy 

    Application.DisplayAlerts = False 

    ActiveWorkbook.Close 

    Dim wkb As Workbook 

    Set wkb = Workbooks.Open("C:\Users\xxxxx\Desktop\Master - Mar.xlsx") 

    Columns.EntireColumn.Hidden = False 
    Rows.EntireRow.Hidden = False 
    Cells.AutoFilter 

    erow = wkb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 

    wkb.Sheets(1).Paste Destination:=Sheets(1).Range(Cells(erow, 1), Cells(erow, 15)) 

    With ActiveSheet 
     Set Rng = Range("A3", Range("O3").End(xlDown)) 
     Rng.RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), Header:=xlYes 
    End With 


    wkb.ActiveSheet.Cells.EntireColumn.AutoFit 

    wkb.Close SaveChanges:=True 

    MsgBox "Rows copied into Master MAR Workbook" 

End Sub 
+1

'.PasteSpecial Paste:= xlPasteFormats'は構文です。 –

+0

貼り付け後にソースブックを閉じる – Slai

+0

Skip Introを使用すると、そのコード行をコードに追加して機能させることができますか?私はどのようにwkb.Sheets(1).Paste Destination:= Sheets(1).Range(Cells(erow、1)、Cells(erow、15))を組み込むかわからない –

答えて

0

スペシャルを貼り付ける構文は.PasteSpecial Paste:=xlPasteFormatsです。

あなたはの線に沿って何かにあなたのコードを変更することで、これを実現することができます。しかし、私はまだあなたが前にコピーしたデータを含むワークブックを閉じているため、上記の動作するか分からない

Worksheets(1).Range(Cells(erow, 1), Cells(erow, 15)).PasteSpecial Paste:=xlPasteFormats 

貼り付ける。私はかなり確実です(テストされていません)貼り付けた後、前のワークブックを閉じるとコードが機能します。最適な解決策は、あなたが決定することです。

関連する問題