保留源格式

时间:2016-10-24 12:33:45

标签: excel vba excel-vba macros

有人可以告诉我如何在粘贴到目标工作簿时保留源格式吗?下面的代码基本上将数据从一个电子表格传输到另一个电子表格,然后删除目标电子表格中的重复行(如果有的话)。谢谢!

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 个答案:

答案 0 :(得分:0)

要粘贴特殊的语法是.PasteSpecial Paste:=xlPasteFormats

您可以通过将代码更改为以下内容来实现此目的:

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

但是,我仍然不确定上述方法是否有效,因为您在粘贴之前关闭了包含复制数据的工作簿。如果您在粘贴之后关闭上一个工作簿,我相当肯定(未经测试)您的代码将起作用。最好的解决方案是让您决定。