将复制的范围(从closures的工作簿)插入到打开的工作簿的命名范围中

我希望能够从一个closures的工作簿(x)插入数据到我的活动工作簿(y)的命名范围(“YearlyData”)中。 该范围位于名为“目标”的工作表中。

但是,命名范围“YearlyData”具有标题行(即范围的第1行),实际的“原始”数据从第2行开始。

我想要做的是从第二行向下移动从源工作区(x)粘贴的确切数量的行。

这是我到目前为止:

Option Explicit Sub DataFromClosedFile() On Error GoTo ErrHandler Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim x As Workbook Dim y As Workbook Dim CA_TotalRows As Integer Dim CA_Count As Integer 

x是closures的源工作簿y是我将粘贴数据的当前活动工作簿

 Set y = ThisWorkbook 'ActiveWorkbook Set x = Workbooks.Open("PATH", True, True) 

这是我想要复制数据的命名范围

 Dim YearlyData As Range Set YearlyData = y.Worksheets("Destination").Range("YearlyData") 

接下来,计算需要复制的行数:

 CA_TotalRows = x.Worksheets("August_2015_CA").UsedRange.Rows.Count 

这里是我需要改变代码的地方。

我需要在命名范围“YearlyData”的第1行和第2行之间插入正确数量的行,然后我需要将数据粘贴到已closures的工作簿的行中。

除此之外,我只想复制源数据手册中的列A:B和E:H。

我读过用户build议使用'.Insert Shift:= xlDown'的post,但是我没有设法使它工作。

所以下面是我的旧代码使用“Sheet3”,而不是“目的地”的工作 – 但显然不会复制到命名的范围“YearlyData”这是我真正想要做的。

请注意,我开始从源工作簿(x)的第2行复制数据,因为我不想复制标题,只能复制原始数据。

  y.Worksheets("Sheet3").Range("A1:B" & CA_TotalRows - 1).Formula = x.Worksheets("August_2015_CA").Range("A2:B" & CA_TotalRows).Formula y.Worksheets("Sheet3").Range("C1:F" & CA_TotalRows - 1).Formula = x.Worksheets("August_2015_CA").Range("E2:H" & CA_TotalRows).Formula 

任何build议将不胜感激!

 x.Close False Set x = Nothing Application.Calculation = xlCalculationAutomatic ErrHandler: Application.EnableEvents = True Application.ScreenUpdating = True End Sub 

你真的不知道Range("YearlyData")Range("YearlyData")所以可能会插入你不需要的额外行。 另外,不知道你为什么做。 .formula 。 我把它改成了.value

 Sub DataFromClosedFile() Dim x As Workbook Dim y As Workbook Dim yws As Worksheet Dim xws As Worksheet Dim CA_TotalRows As Integer Dim CA_Count As Integer Set y = ThisWorkbook 'ActiveWorkbook Set x = Workbooks.Open("PATH", True, True) Set yws = y.WorkSheets("Destination") Set xws = x.WorkSheets("August_2015_CA") Dim r As Long r = yws.Range("YearlyData").Cells(1, 1).Row CA_TotalRows = xws.UsedRange.Rows.Count yws.Rows(r + 1).EntireRow.Resize(CA_TotalRows).Insert yws.Range(Cells(r + 1, 1), Cells(r + CA_TotalRows - 1, 2)).Value = xws.Range("A2:B" & CA_TotalRows).Value yws.Range(Cells(r + 1, 3), Cells(r + CA_TotalRows - 1, 6)).Value = xws.Range("E2:H" & CA_TotalRows).Value x.Close False Set x = Nothing End Sub