我有2本工作簿。源工作簿和目标工作簿。它们是完全相同的,除了1个工作表,它们在两个但不同的数据中都有相同的名称(两者都包含大约30张)。我想要的是将其余相同的工作表从源工作簿复制到目标工作簿,留下一个延迟数据的工作表。
基本上,目标工作簿中存在的相同工作表应替换为源工作簿中的工作表。工作表包含公式和命名范围。 我成功地编写了VBA代码来复制工作表。但由于命名范围具有工作簿范围。命名范围仍引用源工作簿中的位置。所以我得到了两个名字相同的名字。类似的东西:
'The one already present in the destination workbook (from the worksheet which was replaced)
Name=VaccStart , Refers To =Sheet2!$A$2
'The one due to the copied worksheet.
Name=VaccStart , Refers To =[C:\Users\.....\Source.xls]Sheet2!$A$2
我希望命名范围在复制时引用目标工作簿而不是源工作簿。由于两个工作簿中的所有工作表都是相同的,我只是替换它们。
答案 0 :(得分:1)
这将修改命名范围以删除外部文件引用:
Sub ResetNamedRanges()
Dim nm As Name
Dim sRefersTo As String
Dim iLeft As Integer
Dim iRight As Integer
For Each nm In ActiveWorkbook.Names
sRefersTo = nm.RefersTo
iLeft = InStr(sRefersTo, "[")
iRight = InStr(sRefersTo, "]")
If iLeft > 1 And iRight > 0 Then
sRefersTo = Left$(sRefersTo, iLeft - 1) & Mid$(sRefersTo, iRight + 1)
nm.RefersTo = sRefersTo
End If
Next nm
End Sub
答案 1 :(得分:1)
在从源工作簿移动到目标工作簿时,一种简单的方法来解决无意中的链接创建是将目标工作簿从Source重新链接到自身
xl2010的截图