使用for循环复制许多命名范围

时间:2019-06-25 11:56:49

标签: vba loops named-ranges

我将一些值从一个工作簿导入到另一个工作簿。

我想通过遍历目标工作簿中的命名范围来执行此操作,并使用完全相似的名称复制源工作簿中的那些命名范围。要复制的相关名称在目标工作簿的名为“名称”的工作表中列出。

实际的命名范围位于一个名为TargetSheet的工作表中(我为许多单个单元格提供了一个名称)。

我知道如何将一个命名范围从一个工作簿复制到另一个工作簿,当键入它时,它会起作用:

ThisWorkbook.Sheets(“ TargetSheet”)。Range(“ TagName”)= _    Workbooks(“ Source”)。Sheets(“ SourceSheet”)。Range(“ TagName”)。

但是,即使我在字符串中包括了引号,我也无法设法从所有相关的命名范围中复制值。

For i = 2 To 8
  For j = 1 To 6
    CurrentName = """" & ThisWorkbook.Sheets("Names").Cells(i, j) & """"
    ThisWorkbook.Sheets("Target").Range(CurrentName) = _
      Workbooks("Source").Sheets("SourceSheet").Range(CurrentName)
  Next j
Next i

上面的代码给出了错误消息“应用程序定义的错误或对象定义的错误”,而我希望大约42个单元格能够获取更新的值。

2 个答案:

答案 0 :(得分:0)

您应该有一个变量,该变量会带来您要更新的目标表,然后使用 例如: ra.CurrentDb.OpenRecordset("root_table") re.CurrentDb.OpenRecordset("target_table")

然后处理所有代码,执行以下操作更新目标表:

re.AddNew re.Update

答案 1 :(得分:0)

Method 2 Copy the data Sheets("Sheet1").Range("A1:B10").Copy Activate the destination worksheet Sheets("Sheet2").Activate Select the target range Range("E1").Select Paste in the target destination ActiveSheet.Paste

这可以帮助您..就像我对excel所说的不是xpert ..但总有一个开始