Excel VBA - "复制/粘贴"仅粘贴所选范围的值

时间:2015-03-20 09:37:30

标签: excel vba excel-vba

我正在编写一个宏来打开用户选择的文件,复制其中的所有数据并将其粘贴到已打开的另一个工作簿中。代码片段如下所示:

Windows(fileToClose).Activate
ActiveSheet.Range("A1").EntireRow.Delete
ActiveSheet.Range("A1:G1", Selection.End(xlDown)).Select
Selection.Copy
ActiveWindow.Close SaveChanges:=False
Windows(fileKeepOpen).Activate
Sheets("DATA").Select
ActiveSheet.Range("B2:H2", Selection.End(xlDown)).Clear
ActiveSheet.Range("B2").Select
ActiveSheet.Paste

它对选择的第一列起作用很好:它只接受第一个值并将其粘贴到目标列的任何位置。例如,如果选择的第一列中的第一个单元格包含“A”而第二个单元格包含“B”,则目标列将填充“A”。但对于第二栏,没有任何问题。

PasteSpecial根本不起作用(每列都有不同的数据格式,看起来Excel不希望我将所有内容都粘贴为值,因为它一直给我1004错误。)

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我不知道你有什么样的数据,但这应该可以解决问题:

    Dim RS As String
RS = "A1:G" & Workbooks(fileToClose).ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
'MsgBox RS


Workbooks(fileToClose).ActiveSheet.Range("A1").EntireRow.Delete
Workbooks(fileKeepOpen).Sheets("DATA").Range("B2:H2").End(xlDown).Clear


Workbooks(fileToClose).ActiveSheet.Range(RS).Copy Destination:=Workbooks(fileKeepOpen).Sheets("DATA").Cells(2, 2)

Workbooks(fileToClose).Close SaveChanges:=False

如果不能正常工作,请告诉我们原因! ;)