2013-08-12 78 views
0

我有一个代码,可将所有工作表从书1复制到工作簿2.它复印工作表几次,因此我通过在复印的工作表名称前添加001_,002_等来更改名称。所有的床单都有下拉菜单。问题在于它们被引用(公式 - >名称管理器)到以前的工作簿,并且它们不起作用。下拉选择列表的VBA参考

有5张要复制的文件,其中4个正在从表单类型列表中获取下拉菜单的值。这片被复制一次,所以代码不会复制它,如果它已经存在于书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

至:

= TypeLists!$ N $ 3:$ N $ 5

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

干杯!

+0

而不是拷贝pasting..use SAVE AS宏,删除不需要的东西(小心).... – Vasim

回答

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 

问候,