将工作簿中的值复制并粘贴到已关闭的工作簿中

时间:2016-08-10 16:59:41

标签: excel vba excel-vba macros excel-2010

我对VBA编码很新,所以请原谅任何无知。 如何从工作簿1中的一个工作表(DIC)复制并从第一个空行开始在第二个工作簿中的工作表(存档)中粘贴值?我没有经常打开第二张工作表,所以如果可以在不保持打开的情况下完成,那将是首选。

我编译了一个代码,让它复制到同一个工作簿中的第二个工作表中,但是当我把它放到第二个工作簿中时,我感到很难过。

这是我到目前为止的代码:

    Sub copytoarchive()

'Copy From DIC
    Sheets("DIC").Select
    Range("A4:Q4").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy

'Paste into Archive
    Sheets("Archive").Select
     Dim NextRow As Range
     Set NextRow = Range("A65536").End(xlUp).Offset(1, 0)
    NextRow.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False

'Clear Memory
    Set NextRow = Nothing

    End Sub

2 个答案:

答案 0 :(得分:1)

避免所有Select / Selection引用完全限定的范围

试试这个(注释)代码:

Option Explicit

Sub copytoarchive()
    Dim destSht As Worksheet

    Workbooks.Open ("C:\...\FileToCopyTo.xlsx") '<- at opening a workbook it becomes the active one
    Set destSht = ActiveWorkbook.Worksheets("Archive") '<-- set the destination worksheet in the activeworkbook

    With ThisWorkbook.Worksheets("DIC") '<--refer to your source worksheet in the workbook this macro resides in
        With .Range(.Range("A4:Q4"), .Range("A4:Q4").End(xlDown)) '<--| refer to your range whose values are to be copied
            destSht.Cells(destSht.Rows.Count, 1).End(xlUp).Offset(1).Resize(.Rows.Count, .Columns.Count).Value = .Value '<--| copy values in a equally sized range in destination worksheet starting at the first empty cell in column "A"
        End With
    End With

    destSht.Parent.Close True '<--| close the destination workbook, which is obtained as the Parent object of the destination worksheet
End Sub

使用您的实际目标工作簿完整路径更改“C:... \ FileToCopyTo.xlsx”

请注意,如果“A4:B4”下方没有填充的行,则您选择的此范围可能会出错。

答案 1 :(得分:0)

您当然可以从已关闭的工作簿中复制范围。

http://www.rondebruin.nl/win/s3/win024.htm

我不相信您可以将数据保存到已关闭的工作簿中。我甚至无法想象它会如何起作用。