【问题标题】:Splitting workbook and changing named ranges to not reference the original workbook拆分工作簿并更改命名范围以不引用原始工作簿
【发布时间】:2019-12-19 17:41:52
【问题描述】:

我正在尝试拆分我的工作簿,但是当我这样做时,新工作簿中的命名范围指的是原始工作簿。我不想要这个,因为我也将这些参考的源代码复制到了新的工作簿中。因此,我想删除对命名范围中旧工作簿的引用。我试图通过将引用替换为空来改变这一点,但是它不起作用。我做错了什么还是有其他方法?我还尝试删除命名范围并用新的命名范围替换它们,但是命名范围的引用部分是一个带有 =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

提前致谢!

【问题讨论】:

    标签: excel vba


    【解决方案1】:

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

    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]", "")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多