拆分工作簿并更改命名区域以不引用原始工作簿



我正在尝试拆分我的工作簿,但是当我这样做时,新工作簿中的命名范围是指原始工作簿。我不希望这样,因为我也将这些引用的源代码复制到新工作簿中。因此,我想删除对命名区域中旧工作簿的引用。我试图通过替换对无的引用来改变这一点,但它不起作用。我做错了什么,还是有其他方法?我还尝试删除命名范围并用新的命名范围替换它们,但对命名范围的一部分的引用是一个带有 =offset(...( 的函数。这似乎在 VBA 中也不起作用。

Sub RenameNamedRanges()
Dim all_names, n
all_names = Array("1stNamedRange", "2ndNamedRange", "3rdNamedRange")
For Each n In all_names
Names(n).Replace (RefersTo, "[Original_workbook.xlsm]", "")
Next
End Sub

提前感谢!

一种方法是删除命名范围,然后创建一个新范围。

Names(n).Delete
ActiveWorkbook.Names.Add _ 
Name:="newNamedRange", _ 
RefersTo:="=Sheet1!$A$1:$D$3" 

可以检查现有范围所引用内容的输出,并分配给添加新范围时要使用的变量。

Debug.Print(Names(n).RefersTo)

还可以使用

替换 函数替换要替换的部分字符串
Replace(Names(n).RefersTo, "[Original_workbook.xlsm]", "")

最新更新