更改命名范围参考

时间:2016-03-03 22:11:31

标签: excel reference named-ranges

我正在使用具有生成子文件的宏操作的Excel文件。我被指示要做的是为某些字段创建选择列表。我在父文件中创建了一个新的参考表,以包含下拉值。然后我为这些列创建了命名范围。

当我执行子文件的导出操作时,问题就出现了。 “引用到”字符串将更改为包括父文件的路径。我不希望这样,因为如果父关闭,子文件中的选择列表功能会中断。

有没有办法防止“引用”字符串在导出过程中发生变化?包含所有选择列表信息的参考表将从父项复制到子项。

我已尝试直接引用细胞范围并获得相同的结果:

如果主文件引用:='外部参照'!A2:A11 然后子文件引用TO是:='[C:.... xlsm]外部参照'!A2:A11

1 个答案:

答案 0 :(得分:1)

知道新工作簿是一个副本并包含所有名称,如原始名称,您只需运行For Each循环(在源工作簿中用作宏):

Dim xName As Variant, wb As Workbook
Set wb = Workbooks("the child workbook")
For Each xName In ThisWorkbook.Names
  wb.Names(xName.Name).RefersToR1C1 = xName.RefersToR1C1
Next

如果不存在所有名称,只需在循环前使用On Error Resume Next:)

如果您还有任何疑问,请询问。

修改 如果不是所有名称都存在于新的wb中,那么这将更好/更快(在源工作簿中用作宏):

Dim xName As Variant, wb As Workbook
Set wb = Workbooks("the child workbook")
For Each xName In wb.Names
  xName.RefersToR1C1 = ThisWorkbook.Names(xName.Name).RefersToR1C1
Next