0

我有一个代码可以将所有工作表从第 1 本书复制到第 2 本书。它会多次复制这些工作表,因此我通过在复制的工作表名称前添加 001_、002_ 等来更改名称。所有工作表都有下拉菜单。问题是它们被引用(公式-> 名称管理器)到以前的工作簿并且它们不起作用。

有 5 个要复制的工作表,其中 4 个从工作表 TypeLists 中获取下拉菜单的值。此工作表仅复制一次,因此如果第 2 册中已存在此表,则代码不会复制它。

使用记录宏,在更改其中一个引用时,我得到了这个:

ActiveWorkbook.Worksheets("003_TDT").Names("List_DataType").RefersToR1C1 = _
    "=TypeLists!R3C14:R5C14"

我所做的是,我去了公式 --> 名称管理器并更改了以下引用之一:

='C:\Users\z183464\Desktop[seq_tdt_template.xlsx]TypeLists'!$N$3:$N$5

至:

=类型列表!$N$3:$N$5

我的问题是:如何编写一个将所有引用从 Book1/TypeLists 更改为 Book2/TypeLists 的宏?

干杯!

4

1 回答 1

0

您可以使用此代码。它遍历所有定义的名称,并将其引用更改为相同的值,并提取不需要的部分(替换为“”)。

这不是宏,而是 VBA。您需要将其插入 VBA 编辑器 (Alt+F11)。

Sub replaceNameValues()
    Dim oName As Excel.Name
    For Each oName In ThisWorkbook.Names
        oName.RefersTo = Replace(oName.RefersTo, "C:\Users\z183464\Desktop[seq_tdt_template.xlsx]", "")
    Next
End Sub

问候,

于 2013-08-12T07:48:32.443 回答