Excel 2010 VBA复制范围A:Z和粘贴A2:Z

我试图研究,但没有与我想要实现的运气。 我正在处理两个不同的文件; file1.csv(工作表1)和工作簿1(工作表2)

file1.csv(sheet1)包含来自A列的数据:EW,1000+行,并定期用新行更新

这里的最终目标是自动复制file1.csv(工作表1)的全部内容,并将工作表1中的数据粘贴到工作簿1(工作表2)中,从工作表2上的A2开始,因为我需要A1在工作表2上保持空白

我也应该注意到,我不能提供实际的文件,因为它们是保密的,如果有必要,我可以制作一个示例文件。

这是迄今为止在workbook1中的代码,但在复制到/从不同范围进行复制时不起作用。 如果我把它改为从A:EW复制到A:EW, 但是我需要从Sheet1上的A:EW复制到Sheet2上的A2:EW,这很好用。 有没有人有任何build议?

Sub auto_open() ' ' auto_open Macro ' ChDir "C:\" Workbooks.Open Filename:="C:\Users\Username\Desktop\file1.csv" Sheets("sheet1").Range("A:EW").Copy Windows(ThisWorkbook.Name).Activate Worksheets("sheet2").Activate Range("A2:EW").Select ActiveSheet.Paste Windows("sheet1").Activate Application.CutCopyMode = False ActiveWorkbook.Close ' Change date/time format of column A from 20151111 090412 to 11/11/2015 9:04 Dim x As Integer Dim y As Date Dim z As String Dim w As String NumRows = Range("A2", Range("A2").End(xlDown)).Rows.Count Windows(ThisWorkbook.Name).Activate For x = 2 To NumRows z = Cells(x, 1).Value y = Mid(z, 5, 2) & "/" & Mid(z, 7, 2) & "/" & Left(z, 4) w = Mid(z, 10, 2) & ":" & Mid(z, 12, 2) & ":" & Mid(z, 14, 2) y = y + TimeValue(w) Cells(x, 1).Value = y Next x Range("A2").Select End Sub 

您不能将整列减去一行。 如果你这样做,溢出发生。 限制你的副本多一点,例如你可以尝试

 Workbooks.Open Filename:="C:\Users\Username\Desktop\file1.csv" intersect(Sheets("sheet1").Range("A:EW"),sheets("sheet1).usedrange).Copy ThisWorkbook.Sheets("sheet2").Range("A2") 

Range.CurrentRegion属性可以快速引用源于A1的数据的“岛”。

 Dim wb As Workbook Set wb = Workbooks.Open(Filename:="C:\Users\Username\Desktop\file1.csv") With wb 'CSVs open with a single worksheet; usually named the same as the CSV, not Sheet1 With .Worksheets(1) With .Range("A1").CurrentRegion 'reference the destination workbook correctly (ThisWorkbook...?) .Copy Destination:=ThisWorkbook.Worksheets("sheet2").Range("A2") End With End With .Close End With 

您只需要在左上angular引用粘贴目标的单元格。