VBA - 复制/粘贴部分的代码错误输出

时间:2017-01-25 21:33:07

标签: vba

所有

代码在这一部分X.Sheets("TEMP").Range("A").Copy Destination:=Y.Sheets("Text Template").Range("D3")犯了错误。你能告诉我们如何解决这个问题吗?我的目标是获取活动工作表并将数据迁移到现有的已保存工作簿。活动工作簿每天都不同,因此通过文件路径路由它不是最支持的选项。

非常感谢任何建议。

Sub Datamove()
    '
    Worksheets.Add().Name = "TEMP"
    Sheets("MCI").Select
    Cells.Select
    Selection.Copy
    Sheets("TEMP").Select
    Sheets("TEMP").Paste

  ActiveSheet.Range("$A$1:$AH$799").AutoFilter Field:=2, Criteria1:=Array( _
        "MC1A", "MC1B", "MC1C", "MC1D", "MC1E", "MC1F", "MC1G", "MC1H", "MC1J", "MC1K", "MC1L", _
        "MC1M", "MC1N", "MC1P", "MC1Q", "MC1R", "MC2A", "MC2B", "MC2C", "MC2D", "MC2E", "MC3A", _
        "MC3C"), Operator:=xlFilterValues
    ActiveSheet.Range("$A$1:$AH$799").AutoFilter Field:=4, Criteria1:= _
        "Residential"
    ActiveSheet.Range("$A$1:$AH$799").AutoFilter Field:=5, Criteria1:="="


Dim X As Workbook
Dim Y As Workbook

Set X = ActiveWorkbook
Set Y = Workbooks.Open("insert filepath")

X.Sheets("TEMP").Range("A").Copy Destination:=Y.Sheets("Text Template").Range("D3")
X.Sheets("TEMP").Range("R").Copy Destination:=Y.Sheets("Text Template").Range("F3")
X.Sheets("TEMP").Range("AU").Copy Destination:=Y.Sheets("Text Template").Range("B3")


End Sub

2 个答案:

答案 0 :(得分:0)

试试这些:

X.Sheets("TEMP").Range("A3").Copy Destination:=Y.Sheets("Text Template").Range("D3")
X.Sheets("TEMP").Range("R3").Copy Destination:=Y.Sheets("Text Template").Range("F3")
X.Sheets("TEMP").Range("AU3").Copy Destination:=Y.Sheets("Text Template").Range("B3")

在这里,您可以阅读范围对象的更多内容: https://msdn.microsoft.com/en-us/library/office/ff838238.aspx?f=255&MSPPError=-2147217396

如果您只想复制列,请使用如下:

Columns("A:A").Copy

答案 1 :(得分:0)

假设代码为Set Y = Workbooks.Open("insert filepath") 无情地运行,然后替换:

X.Sheets("TEMP").Range("A").Copy Destination:=Y.Sheets("Text Template").Range("D3")
X.Sheets("TEMP").Range("R").Copy Destination:=Y.Sheets("Text Template").Range("F3")
X.Sheets("TEMP").Range("AU").Copy Destination:=Y.Sheets("Text Template").Range("B3")

使用:

With X.Sheets("TEMP")
    .Range("A1", .Cells(.Rows.Count, "A").End(xlUp)).Copy Destination:=Y.Sheets("Text Template").Range("D3")
    .Range("R1", .Cells(.Rows.Count, "R").End(xlUp)).Copy Destination:=Y.Sheets("Text Template").Range("F3")
    .Range("AU1", .Cells(.Rows.Count, "AU").End(xlUp)).Copy Destination:=Y.Sheets("Text Template").Range("B3")
End With