2013-08-12 158 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 

問候,