2016-08-22 80 views
0

我有一大堆工作表,它们是通过导出两个工作表创建的 - 数据表本身和一个名为Lookups的工作表,其中包含数据验证下拉列表的命名范围。在复制的表格中从命名范围中删除外部引用

时遇到的最大问题是,在复制过程已导致不是指新的工作表的命名范围,但原来的工作簿 - 其中TimeUnits范围被定义为=Lookups!$D$2:$D$4,它居然成了='\\sestofp001p\users\SEANP\WWL\Other Projects\20160531 - Ops - Port data project\Data Collection\[Port Data.xlsm]Lookups'!$D$2:$D$4

这不会是一个巨大的问题,除了在312个不同的工作簿上有26个范围,所以我正在寻找一种方便的方式来删除多余的位,将其转化为该书的本地参考。有什么建议么?

+0

搜索和替换允许您替换公式中的数据。 –

+0

你可以遍历'Workbook.Names'集合 – Slai

+0

@iDevlop,只是在实际的工作表中做公式,据我所知 - 它似乎并没有改变命名的范围引用。有什么特别的我需要寻找? –

回答

1

您是否尝试过定义Name变量并通过VBA创建它? 像下面这样:

Sub Add_NamedRange() 

Dim TimeUnits_NamedRange   As Name 

' create the named range , modify This Workbook to your new created workbook 
Set TimeUnits_NamedRange = ThisWorkbook.Names.Add("TimeUnits", ThisWorkbook.Sheets("Lookups").Range("$D$2:$D$4")) 

End Sub 
+0

啊,非常好 - 这就是我希望的那种事情!它会覆盖/编辑现有范围,还是我需要先明确删除它们? –

+1

它会用相同的名称覆盖现有的命名范围 –

+0

宏伟,谢谢! –