4

我有 2 个工作簿。源工作簿和目标工作簿。除了 1 个工作表在两者中具有相同名称但不同的数据(都包含大约 30 个工作表)之外,它们完全相同。我想要的是将其余相同的工作表从源工作簿复制到目标工作簿,留下 1 个延迟数据的工作表。

基本上,目标工作簿中存在的相同工作表应替换为源工作簿中的工作表。工作表包含公式和命名范围。我成功地编写了 VBA 代码来复制工作表。但是由于命名范围具有工作簿范围。命名范围仍然引用源工作簿中的位置。所以我得到了 2 个同名的命名范围。就像是:

'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 

我希望命名范围在我复制它们时引用目标工作簿而不是源工作簿。由于两个工作簿中的所有工作表都是相同的,我只是替换它们。

4

2 回答 2

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
于 2011-12-07T04:23:49.920 回答
1

从源工作簿移动到目标工作簿时,避免无意创建链接的一种简单方法是将目标工作簿从源重新链接到自身

xl2010 截图

  • 编辑....链接
  • “更改源”并选择当前文件作为新源

在此处输入图像描述

于 2011-12-07T05:18:01.033 回答