我对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
答案 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
我不相信您可以将数据保存到已关闭的工作簿中。我甚至无法想象它会如何起作用。