Excel 将复制的范围(从关闭的工作簿)插入打开工作簿的命名范围

Excel 将复制的范围(从关闭的工作簿)插入打开工作簿的命名范围,excel,vba,Excel,Vba,我希望能够将已关闭工作簿(x)中的数据插入活动工作簿(y)的命名范围(“YearlyData”)。此范围位于名为“目的地”的工作表中 但是,命名范围“YearlyData”有一个标题行(即范围的第1行),实际的“原始”数据从第2行开始 我想做的是将内容从第2行开始向下移动,移动的精确数量是从源workboox(x)粘贴的行数 以下是我到目前为止的情况: Option Explicit Sub DataFromClosedFile() On Error GoTo ErrHandler App

我希望能够将已关闭工作簿(x)中的数据插入活动工作簿(y)的命名范围(“YearlyData”)。此范围位于名为“目的地”的工作表中

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

我想做的是将内容从第2行开始向下移动,移动的精确数量是从源workboox(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是已关闭的源工作簿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行之间插入正确数量的行,然后我需要将数据从关闭的工作簿粘贴到这些行中

除此之外,我只想从源数据本复制列A:B和E:H

我读过一些帖子,其中用户建议使用“.Insert Shift:=xlDown”,但我没能成功

下面是我使用“Sheet3”而不是“Destination”的旧代码,它可以工作,但显然没有将它复制到命名范围“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
任何建议都将不胜感激

x.Close False
Set x = Nothing

Application.Calculation = xlCalculationAutomatic

ErrHandler:
    Application.EnableEvents = True
    Application.ScreenUpdating = True

End Sub

您并没有说
范围(“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

这和我的问题一样吗?不,这是不同的。在另一个示例中,我创建了将数据插入Sheet3的代码,现在我想进一步将其插入到一个范围内(在现有的第1行和第2行之间)。换句话说,我想要1。在范围内添加所需的行数,然后添加2。粘贴数据(以避免覆盖)。